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 の場合
$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 を追加して対応したらうまく動きませんでした

端的に書くと
 // api v1 応答
 echo json_encode(array(
  "speech" => '応答メッセージ',
  "displayText" => '応答メッセージ'
 ));

 // api v2 応答
 echo json_encode(array(
  "fulfillmentText" => '応答メッセージ'
 ));
です


コメント