コード例 #1
0
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")