2016-08-02 2 views
1

TLDR;私は現在、私はチャットAPIフィードバックポータル を見つけることができなかったので、これは、バグよりもプラットフォームの設計提案の詳細です:@ FacebookのメッセンジャーAPIでは、ボタンのポストバックペイロードテキストがクリック時にチャットウィンドウに記録されないようにするにはどうすればよいですか?

下、私はFacebookのバグセクション

NOTEで、次の質問をユーザーが目標を追跡できるチャットボットを構築します。 「2016年7月12日に散歩に行きましたか?下記のはい/いいえボタンがあります。
現在、インテント、曜日、達成度ブール値を渡すには、このような文字列をテンプレート化する必要があります。 "==目標==達成< < < {goal_achieved} >>>、[[[{date_tracked} ]]] "を使い、regexを使って区切られた変数を取り込みます。これは、ペイロードのテンプレート文字列がユーザー入力変数である、つまり '{goal_achieved}'が目標変数 '>> meditated'に置き換えられた場合、テンプレート変数をキャプチャする正規表現が失敗する可能性がある
ポストバックペイロードを使用してJSONエンコードされた文字列を格納できますが、この問題はペイロード文字列がユーザーの出力に記録され、JSON文字列が少し醜く混乱します。ペイロードがユーザーにログインしていなかった場合は代わりに、ユーザーがボタンをクリックして確認を支援するボタンのテキストをログに記録します。
それが不可能な場合は、ボタンのペイロードにデータを符号化するための他のアドバイスがありますか?

Th e回答が提供されました(Mark Wiltse)

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

この文は特に不明であった:

私は、これは扱いが少し面倒です知っているが戻さペイロード応答 は メッセンジャー糸で提供されたテキストとは無関係です。

TLDR; 誰でも私のアプリにJSONを渡すためにそれを見ることができるように、ボタンがペイロード文字列を記録するのを防ぐ方法を私に知らせることができますか?

答えて

1

ボタンを押すと、ボタンのテキストの代わりにペイロードが表示されていると私は理解しています。

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

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

ペイロードの解析に混乱を招く特殊文字を削除することをおすすめします。特殊文字がユーザーエクスペリエンスにとって重要でない限り、これはおそらく良い解決策です。

これはあなたの問題を解決しない場合は、次の

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

+0

奇妙な、それはペイロードではない、ボタンのテキストがログに記録されているようだ...多分私は以前それが修正された不具合を観察し...か多分私は間違いを犯したかもしれません、確認のおかげで –

2

あなたreceivedPostback()呼び出しでsendTextMessage()をコメントアウトすることを確認してください:

function receivedPostback(event){ 
    sendTextMessage(senderID, event.postback.payload); 
} 
関連する問題