def message(): """ Handle incoming USSD messages, passed as HTTP requests via the vumi HTTP API. """ logger.debug("MESSAGE endpoint called") # TODO: filter out service messages, such as "content": "state: wait_ussrc" if request.method == 'POST': tmp = request.get_json() msg = VumiMessage(tmp) if msg.content == "state: wait_ussrc": logger.debug("End of session message received.") else: logger.debug(msg) try: user_id = msg.from_addr # user's cellphone number content = msg.content # selected menu item, if any mark_online(user_id) selected_item = None try: selected_item = int(content) except (ValueError, TypeError): pass reply_content = generate_output(user_id, selected_item) if app.debug: logger.debug(reply_content) else: msg.reply(reply_content) except Exception as e: logger.exception(e) pass return make_response("OK")