繁体   English   中英

Webhook呼叫失败。 错误:无法解析webhook JSON响应:预期消息对象,但为空

[英]Webhook call failed. Error: Failed to parse webhook JSON response: Expect message object but got null

我已经编写了将数据库链接到MySQL数据库的实现,但是dialogflow返回状态Webhook调用失败。 错误:无法解析webhook JSON响应:预期消息对象,但得到:null。 我应该将用户输入添加到MySQL数据库中。

我试图研究v1和v2的json格式,但没有太大的突破。

<?php
function sendMessage($parameters)
{
    $jsonencodeparameters = json_encode($parameters);

    echo json_encode(parameters);
}

function debug_text ($namafile, $contentdebug)
{
    $myfile = fopen ($namafile, w) or die ("unable to open file");
    fwrite ($myfile, $contentdebug);
    fclose($myfile);
}

function add_data ($first_name,$last_name, $policy_number, $link,$mySQLserver,$mySQL)
{
    $sql = "insert into users ('firstname','lastname','policynumber') values ('first_name','last_name','policy_number')";
    $namafile = "add.txt";
    $contentdebug = "sql=".$sql;
    debug_text($namafile,$contentdebug);
    $last_id =0;
    try
    {
        $conn = new PDO("mysql:host = $mySQLserver,dbname = $mySQLdefaultdb",$mySQLserver,$mySQLpassword);
        $conn = setAttribute (PDO::ATTR_ERRMODE,ERRMODE_EXCEPTION);
        $conn->exec($sql);
        $last_id = $conn->lastinsertId();
    }
    catch (PDOException $e)
    {
        $last_id = 0;

    }
return last_id;
}




include ('db_regusers.php');
include ('function_regusers.php');
$update_response = file_get_contents('php://input');
$update = json_decode($update_response, true);
$varresultaction = $update['queryResult']["action"];
$fulfillmentMessages = $update["queryResult"]["queryText"];
$session = $update["session"];
$firstname = $update['queryResult']['parameters']['firstname'];
$lastname=$update["queryResult"]["parameters"]["lastname"];
$policynumber=$update["queryResult"]["parameters"]["policynumber"];
$ignore1 = '';
$sessionunique = '';

if ($session != '')
{
    $list = list($ignore1,$sessionunique) = explode('sessions/',$session);

}
else
{
    $nothing = 'You do not have a session';
    sendMessage(array(
    'source'=>null,
    'fulfillmentText'=>$nothing
));
exit;
}

}
if($varresultaction == 'entry_data')
{
    $id = add_data($firstname,$lastname,$policynumber,$mySQLserver,mySQLdefaultdb,mySQLuser,mySQLserver,mySQLpassword);
    $response = 'data has been saved, your access_code is' +'.$id';
    sendMessage (array(
    'source'=> null,
    'fulfillmentText'=>$response));
    exit;
}

看起来您的代码可能存在逻辑问题。 您仅在两种情况下发送响应:

  • 没有会议信息
  • 动作名称为“ entry_data”

对于“欢迎意图”,“后备意图”或任何其他意图-将不会发送任何内容,因此会产生错误。

source显式设置为null而不是将其设置为字符串似乎很奇怪。 由于source被列为可选,因此您可以完全省略它,否则只需将其设置为字符串即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM