Fb messenger Sender_action函数的新手

时间:2018-04-11 08:48:27

标签: facebook chatbot facebook-chatbot

我正在聊天机器人的学习过程中,对整体编码有点新鲜(通过正确的学习来学习?)

尝试执行信使功能,以便我们的聊天机器人在发送模板之前获得少量“写入”气泡x个时间。 = sender_action_typing_on

我已经尝试过睡眠,等待,等待等等,但代码似乎没有被执行,但模板仍然显示在我选择的时间之后。

json在Facebook的文档中也是正确的,如果它单独执行,它会在超时之前运行20 sek。

代码:

if ( $response == "")
{

    $jsonData = '{"recipient":{"id":"' . $sender . '"},"message":{"text":"' . $message_to_reply.'"}}';
    $jsonDataEncoded = $jsonData;
}
else
if ( $response == "123456")
{

    $sender_action_typing_on = '{
      "recipient":{
        "id":"<PSID>"
      },
      "sender_action":"Typing_on"
    }';
    $sender_action_typing_on = str_replace("<PSID>", $sender, $sender_action_typing_on);
    $jsonDataEncoded = $sender_action_typing_on;


   $velkommenTemplateJSON = str_replace("<PSID>", $sender, $velkommenTemplateJSON);
   $jsonDataEncoded = $velkommenTemplateJSON;

}

1 个答案:

答案 0 :(得分:0)

我现在已经解决了这个问题,对于很多人来说这可能是非常自我解释的,但对于寻找答案的“迷失的灵魂”,你可以看到我在这里解决问题的方式:

首先我创建了一个新功能:

   function sendToMessenger($access_token, $sender, $sender_actiontemplateJSON)
{


   $content = str_replace("<PSID>", $sender, $sender_actiontemplateJSON);


$opts = array(
    'http'=>array(
    'method'=>"POST",
    'header' => "Content-Type: application/json",
    'content' => $content    
    )
 );

$context = stream_context_create($opts);

$url = 'https://graph.facebook.com/v2.6/me/messages?access_token=' . $access_token;

// Open the file using the HTTP headers set above
$file = file_get_contents($url, false, $context);

return $file;

然后我重新安排了我发送模板的方式,因为模板是在我的代码的末尾发送的“Sender_action”将永远被覆盖,现在使用“SendToMessenger”功能,它立即被发送。

else
if ( $response == "123456")
{



   sendToMessenger($access_token, $sender, $sender_actiontemplateJSON);

   sleep(1);

   sendToMessenger($access_token, $sender, $velkommenTemplateJSON);


}

现在它就像一个魅力!