1

TLDR; @ 下

Facebookのバグセクションで次の質問をしました

注: チャット API フィードバック ポータルが見つからなかったため、これはバグというよりもプラットフォーム設計の提案です。現在、ユーザーが目標を追跡できるようにするチャット ボットを構築しています。「2016 年 7 月 12 日に散歩に行きましたか?」のようなメッセージが表示されます。下に「はい/いいえ」ボタンがあります。
現在、意図、日、および達成ブール値を渡すために、次のような文字列をテンプレート化する必要があります。 ]" を開き、正規表現を使用して区切り変数をキャプチャします。これは、ペイロード内のテンプレート化された文字列がユーザー入力変数である場合、つまり「{goal_achieved}」が目標変数「>>meditated」に置き換えられた場合など、解析エラーが発生しやすくなります。
ポストバック ペイロードを使用して JSON でエンコードされた文字列を保存することもできますが、これの問題は、ペイロード文字列がユーザー出力に記録され、JSON 文字列が少し見苦しく、混乱を招くことです。ペイロードがユーザーに記録されていない場合、私が直面している課題は簡単に解決できます。代わりに、ボタンのテキストをログに記録して、ユーザーがボタンがクリックされたことを確認できるようにします。
それが不可能な場合、データをボタン ペイロードにエンコードするための他のアドバイスはありますか?

次の回答が提供されました (Mark Wiltse)

こんにちはジャスティン 残念ながら、現時点では、私たちのペイロード構造は、実装しようとしている機能をサポートしていません。私の理解では、ペイロードを使用して、ユーザーがその特定の日に「目標」を達成したかどうかをバックエンドに通知したいと考えています。私たちに渡す前に、あなたの側でボタンのペイロード応答を作成することをお勧めします。これは基本的に、最初にあなたが持っていた JSON のアイデアです。これは処理が少し面倒ですが、返されるペイロード応答は、メッセンジャー スレッドで提供されたテキストとは無関係です。ユーザーが以前に正規表現に問題を引き起こす可能性があると懸念している場合は、文字列をサニタイズすることもお勧めします。正規表現/json 解析の問題を回避するために以前のユーザー データがサニタイズされている場合、この機能を実装できるはずです。これは実装に関する質問であるため、このレポートは無効としてクローズする必要があります。このフローを実装するための追加の洞察と具体的なヒントをまだ探している場合は、スタック オーバーフローに投稿してください。Facebook エンジニアと、貢献しているさまざまなコミュニティ メンバーがいます。 http://facebook.stackoverflow.com/ メッセンジャーボットに気をつけて、よろしくお願いします。マーク

この文は特に不明確でした:

これは処理が少し面倒ですが、返されるペイロード応答は、メッセンジャー スレッドで提供されたテキストとは無関係です。

TLDR; ボタンがペイロード文字列をログに記録しないようにする方法を誰かに教えてもらえますか?

4

2 に答える 2

2

sendTextMessage()あなたのreceivedPostback()呼び出しでコメントアウトしてください:

function receivedPostback(event){
    sendTextMessage(senderID, event.postback.payload);
}
于 2016-10-24T16:01:50.790 に答える
1

私の理解では、ボタンを押すと、ボタンのテキストではなくペイロードが表示されると言っています。

このようにボタンを定義していますか?

    {
      type: "postback",
      title: "View Details",
      payload: "details:12345"
    }

ペイロードの解析を台無しにする特殊文字を削除することをお勧めします。特殊文字がユーザー エクスペリエンスにとって重要でない限り、これはおそらく優れたソリューションです。

これで問題が解決しない場合:

押しているボタンを示すスクリーンショットと、あなたが話しているログメッセージを追加できますか? 私の理解では、ボタンを押すと、ボタンのテキストではなくペイロードが表示されると言っています。ボタンを押すと、ボタンのテキストが表示されます。

于 2016-08-03T16:24:26.900 に答える