コミュニティ

LINE WORKSのテクニカルエキスパート及び開発者と
コードのサンプル、リソース、Tip等を共有し問題解決への相談が可能です。

??dev_메인_타이틀_모바일_ja_JP??

問い合わせ

Message Actionのpostbackの挙動について

t_kiyuna

2020.07.03既読 298

今回、APIのバージョンアップ対応を進めております。

その際、下記のドキュメントを参考に開発しているのですが、
Message Actionのpostbackの挙動について、ご教示ください。
https://developers.worksmobile.com/jp/document/1005050?lang=ja


確認したいこと:
1:Message ActionのpostbackのデータでJSON形式の文字列を扱う場合は、
 json.stringifyなどを使って文字列変換せず、エスケープ処理を使って送るのが正しいでしょうか?

経緯:
postbackは、string値を許容するということで、
JSONデータをJSON形式の文字列変換し送信したところ、
postbackされたデータが欠落しておりました。

送信元データ:
"postback":"{"hoge_key1":hoge_value,"hoge_key2":"hoge_value","hoge_key3":"hoge_value"}"
json.stringifyにて、変換後データ:
"postback":"{\"hoge_key1\":hoge_value,\"hoge_key2\":\"hoge_value\",\"hoge_key3\":\"hoge_value\"}"
 postbackで受けとったデータ:
 {"type":"text","text":"hoge","postback":"{"}
*postbackが欠落してる。
そこで、json.stringifyを利用せず、
ダブルクォーテーションをエスケープすると期待していた通りに返却されます。

送信元データをエスケープ処理したデータ:
"postback":"{%22hoge_key1%22:hoge_value,%22hoge_key2%22:%22hoge_value%22,%22hoge_key3%22:%22hoge_value%22}
エスケープ処理した場合にpostbackで受けとったデータ:
{"type":"text","text":"hoge","postback":"{\"hoge_key1\":hoge_value,\"hoge_key2\":\"hoge_value\",\"hoge_key3\":\"hoge_value\"}"}
こちらjson.stringifyでダブルクォーテーションをエスケープしたバックスラッシュがある場合によって、
postbackで受けるデータが欠落しているのでは?と想定しております。
今回はバックスラッシュだけでしたが、そもそも、他の特殊文字での挙動などが不明のため、
postbackでJSON形式のデータを正しく送信する方法を確認させていただきました。

コメント1

  • LINE WORKS 公式アカウント

    通常、postback データでダブルクォート (") などの特殊文字をエスケープする際には backslash (\) でのエスケープが使用できます。

    しかし、確認いたしましたところ現在 backslash (\) でのエスケープが利用できなくなっておりました。
    ご迷惑をおかけしてしまい、申し訳ございません。
    修正が完了し次第、またご連絡させていただきます。

    お手数をおかけいたしますが、URL エンコードでのエスケープをご利用いただければと思います。

    2020.07.09

    1
前の投稿 認証サーバーへの Token リクエストエラー
次の投稿API ID, Service API Consumer Keyの文字数はいくつか?