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 の場合
  1. $data = file_get_contents("php://input"); // 取得  
  2. $jsonArray = json_decode($data, true); // json -> 配列  
  3.   
  4. // v1 action取得  
  5. $action = $jsonArray["result"]["action"];  
  6.   
  7. // v2 action取得  
  8. $action = $jsonArray["queryResult"]["action"];  
な感じに取得位置を変更します

送られてきたアクションに対する応答は、こちらのような形で speech と displayText で返していたものを fulfillmentText というキーに変更します
※面倒なので v1 の応答に fulfillmentText を追加して対応したらうまく動きませんでした

端的に書くと
  1. // api v1 応答  
  2. echo json_encode(array(  
  3.  "speech" => '応答メッセージ',  
  4.  "displayText" => '応答メッセージ'  
  5. ));  
  6.   
  7. // api v2 応答  
  8. echo json_encode(array(  
  9.  "fulfillmentText" => '応答メッセージ'  
  10. ));  
です


コメント