class Greeter(object): def __init__(self, access_token): self.access_token = access_token self.requestor = Requestor(GREETER_URL) def setup(self): params = self._get_params() headers = self._get_headers() payload = self._get_payload() self.requestor.post(params, headers, payload) def _get_params(self): return { "access_token": self.access_token } def _get_headers(self): return { "Content-Type": "application/json" } def _get_payload(self): return json.dumps({ "greeting":[ { "locale": "default", "text": GREETER_TEXT } ] })
class Menu(object): def __init__(self, access_token): self.access_token = access_token self.requestor = Requestor(MENU_URL) def setup(self): self._make_post_request() def _make_post_request(self): """Getting started button required to be POST'd first """ params = self._get_POST_params() headers = self._get_headers() payload = self._get_payload() self.requestor.post(params, headers, payload) def _get_headers(self): return {"Content-Type": "application/json"} def _get_POST_params(self): return {"access_token": self.access_token} def _get_GET_params(self): return {"access_token": self.access_token, "fields": "persistent_menu"} def _get_payload(self): return json.dumps({ "persistent_menu": [{ "locale": "default", "composer_input_disabled": False, "call_to_actions": [self._get_actions()] }] }) def _get_actions(self): return { "title": "Menu", "type": "nested", "call_to_actions": self._get_menu_buttons() } def _get_menu_buttons(self): return [ self._get_hours_button(), self._get_availabilities_button(), ] def _get_hours_button(self): return {"title": "Hours", "type": "postback", "payload": HOURS_PAYLOAD} def _get_availabilities_button(self): return { "title": "Availabilities", "type": "postback", "payload": AVAILABILITIES_PAYLOAD }
class GetStartedButton(object): def __init__(self, access_token): self.access_token = access_token self.requestor = Requestor(GET_STARTED_BUTTON_URL) def setup(self): params = self._get_params() headers = self._get_headers() payload = self._get_payload() self.requestor.post(params, headers, payload) def _get_headers(self): return {"Content-Type": "application/json"} def _get_params(self): return {"access_token": self.access_token} def _get_GET_params(self): return {"access_token": self.access_token, "fields": "get_started"} def _get_payload(self): return json.dumps({"get_started": {"payload": GET_STARTED_PAYLOAD}})
class Replier(object): def __init__(self, access_token): self.access_token = access_token self.requestor = Requestor(REPLY_URL) def wit_send(self, request, response): recipient_id = request['session_id'] message = response['text'] params = self._get_params() headers = self._get_headers() payload = self._get_payload(recipient_id, message) self.requestor.post(params, headers, payload) def reply_with(self, recipient_id, message): params = self._get_params() headers = self._get_headers() payload = self._get_payload(recipient_id, message) self.requestor.post(params, headers, payload) def reply_welcome(self, recipient_id, user): text = self._get_welcome_text(user) params = self._get_params() headers = self._get_headers() payload = self._get_payload(recipient_id, text) self.requestor.post(params, headers, payload) def _get_welcome_text(self, user): return "Hi " + user.first_name + " " + user.last_name + ". " + WELCOME_TEXT def _get_params(self): return { "access_token": self.access_token } def _get_headers(self): return { "Content-Type": "application/json" } def _get_payload(self, recipient_id, message): return json.dumps({ "recipient": { "id": recipient_id }, "message": { "text": message } })