我正在开发模式下的Messenger聊天机器人,并在处理消息和快速回复方面取得了一些进展,但在用户按下“开始使用按钮”后无法找到检测Facebook发送的Postback有效负载事件的方法
我已经设置了Get Started按钮回发并通过向Messenger Profile API发送POST请求来放置有效负载字符串,该请求返回“成功”,并且还将“messaging_postbacks”事件设置为我的webhook。
但是,单击该按钮时,webhook不会检测到该事件。
这是我的代码的一部分:
$input = json_decode(file_get_contents('php://input'), true);
$sender = $input['entry'][0]['messaging'][0]['sender']['id'];
//this handles the message text properly
$message = $input['entry'][0]['messaging'][0]['message']['text'];
//this deals correctly with quick reply payload
$quickreply = $input['entry'][0]['messaging'][0]['message']['quick_reply']['payload'];
我已经单独尝试了这一行代码中的每一行来获取由get start按钮触发的回发输入:
$getstarted = $input['entry'][0]['messaging'][0]['get_started']['payload'];
$getstarted = $input['entry'][0]['messaging'][0]['message']['get_started']['payload'];
$getstarted = $input['entry'][0]['messaging'][0]['postback']['payload'];
$getstarted = $input['entry'][0]['messaging'][0]['message']['postback']['payload'];
我会感激任何建议:)
检索get_started按钮的值的方法是我尝试过的方法之一,具体来说:
$input['entry'][0]['messaging'][0]['postback']['payload']
这个问题与我发送POST请求的cURL中的代码的单独部分有关。
它说:
if(!empty($input['entry'][0]['messaging'][0]['message'])){
$result = curl_exec($ch);
需要说:
if(!empty($input['entry'][0]['messaging'][0]['postback'])){
$result = curl_exec($ch);
get_started按钮向webhook发送回发,因此第一个脚本没有启动cUrl,因为$ input变量中没有'message'但是'postback'属性
一个很好的视频资源处理同样的问题:https://www.youtube.com/watch?v=JQkmznEfVDo