0

個別の twilio phone unsubscribers リストを維持したいのですが、これは、着信メッセージを受信するように twilio コンソールを介して webhook が構成されている場合に実行できます。誰かが「STOP」と入力したときに、それらのメッセージのみを解析します。Webhook を正常に構成しました ここに画像の説明を入力

携帯電話から twilio 番号に「STOP」と入力すると、常に悪いリクエストが届きます。私のコードは次のようになります

@app.route('/twilio/unsubscribes_incremental', methods=['POST', 'GET'])
def phone_unsubscribes_incremental():
    print("start")
    print("The arguments are ", request.args)
    payload = request.get_json(force=True)
    print("The payload is ", payload)
    #resp = MessagingResponse()
    if payload.get('Body') in twilio_unsubscribe_list:
        stream_data_to_bq(payload)
    #resp.message("")
    #return str(resp)
    return jsonify({"status":"ok"})

私のpythonコンソールは次のように表示されます ここに画像の説明を入力

私のngrokコンソールは次のように表示されます ここに画像の説明を入力

私のtwilioコンソールログは次のように表示されます ここに画像の説明を入力

何らかの理由で、Webhook に送信されたリクエスト オブジェクトを解析できません。このアカウントは無料トライアル中です。受信メッセージを解析するための適切なドキュメントを教えてください。

4

2 に答える 2

2

Twilio 開発者エバンジェリストはこちら。

Alan が指摘するように、Twilio Webhook リクエストはフォームapplication/x-www-form-urlencodedでデータを送信します。これは、Web フォームがデータを投稿するのと同じ形式です。JSON ではありません。Twilio は、アプリケーションの応答が であることも想定していますapplication/xml

そのため、からデータを読み取り、request.formTwilio にリクエストでさらに何かを行うように指示することを期待していないように見えるため、空の<Response> TwiML 要素を返す必要があります。

このようなものが動作するはずです:

@app.route('/twilio/unsubscribes_incremental', methods=['POST', 'GET'])
def phone_unsubscribes_incremental():
    print("start")
    print("The arguments are ", request.args)
    payload = request.form
    print("The payload is ", payload)
    if payload.get('Body') in twilio_unsubscribe_list:
        stream_data_to_bq(payload)
    resp = MessagingResponse()
    return str(resp), { 'Content-Type': 'application/xml' }
于 2021-04-09T00:11:35.557 に答える