PHP如何处理入门按钮Messenger回拨与聊天机器人

问题描述 投票:0回答:1

我正在开发模式下的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']; 

我会感激任何建议:)

php bots postback messenger
1个回答
0
投票

检索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

© www.soinside.com 2019 - 2024. All rights reserved.