Dialogflow から webhook される php を Google API v2 に対応させる
Dialogflow から google api v2 に対応しろとのお知らせが表示されるので、webhook される php を Google API v2 に対応させる
命令の流れをおさらい
まずは、どういう仕組だったかを忘れていたのでメモ
アプリに入って、命令を行うと、Intent にある Action and parameters の値を含む json が

Fulfillment に指定した url へポストされるので、応答メッセージを含む json を返す

という仕組み
API の切り替え
google api v2 対応への切り替え(Dialogflow側)は、スイッチを切り替えるだけ

api 切り替え後の web 側変更
API を切り替えると、送られてくる json の内容が変わります。また、応答メッセージを埋め込む json の形式も変わります。なので「そのままだと アプリから応答がありません」みたいな形になります
api v1 で post される json

api v2 で post される json

php の場合
命令の流れをおさらい
まずは、どういう仕組だったかを忘れていたのでメモ
アプリに入って、命令を行うと、Intent にある Action and parameters の値を含む json が

Fulfillment に指定した url へポストされるので、応答メッセージを含む json を返す

という仕組み
API の切り替え
google api v2 対応への切り替え(Dialogflow側)は、スイッチを切り替えるだけ

api 切り替え後の web 側変更
API を切り替えると、送られてくる json の内容が変わります。また、応答メッセージを埋め込む json の形式も変わります。なので「そのままだと アプリから応答がありません」みたいな形になります
api v1 で post される json

api v2 で post される json

php の場合
- $data = file_get_contents("php://input"); // 取得
- $jsonArray = json_decode($data, true); // json -> 配列
- // v1 action取得
- $action = $jsonArray["result"]["action"];
- // v2 action取得
- $action = $jsonArray["queryResult"]["action"];
な感じに取得位置を変更します
送られてきたアクションに対する応答は、こちらのような形で speech と displayText で返していたものを fulfillmentText というキーに変更します
※面倒なので v1 の応答に fulfillmentText を追加して対応したらうまく動きませんでした
端的に書くと
です
送られてきたアクションに対する応答は、こちらのような形で speech と displayText で返していたものを fulfillmentText というキーに変更します
※面倒なので v1 の応答に fulfillmentText を追加して対応したらうまく動きませんでした
端的に書くと
- // api v1 応答
- echo json_encode(array(
- "speech" => '応答メッセージ',
- "displayText" => '応答メッセージ'
- ));
- // api v2 応答
- echo json_encode(array(
- "fulfillmentText" => '応答メッセージ'
- ));
コメント