我们正在使用API.AI,并且我们希望实施Facebook的Facebook复选框插件以将bot与用户连接起来。Facebook上的复选框插件API.AI
如果我清楚地了解它是如何工作当用户确认包含此复选框的表单,Facebook将发送一个事件。
是否可以在不修改Facebook和API.AI之间的heroku应用程序的情况下获得活动?
谢谢全部
我们正在使用API.AI,并且我们希望实施Facebook的Facebook复选框插件以将bot与用户连接起来。Facebook上的复选框插件API.AI
如果我清楚地了解它是如何工作当用户确认包含此复选框的表单,Facebook将发送一个事件。
是否可以在不修改Facebook和API.AI之间的heroku应用程序的情况下获得活动?
谢谢全部
我一直在研究这个。从我所能找到的信息API.AI不支持除“messages”和“messaging_postbacks”之外的任何messenger webhook事件。您需要“messaging_optins”才能接收这些事件。
虽然您无法通过API.AI接收这些事件,但我确实找到了一种解决方法,可以让您在api.ai和facebook之间保持当前配置。
不用担心从facebook接收选择事件,只需在确认选择加入后立即触发Facebook发送API即可。
这是有效的,因为你是设置“user_ref”参数的人,所以只要用户登录Facebook并勾选了复选框,触发确认将在facebook系统中存储user_ref,并且您可以致电之后Facebook的API使用相同的参数来启动与用户的对话。
下面是整个流程的一个示例:
Javascript和HTML前端。
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<APP_ID>',
xfbml : true,
version : 'v2.6'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')
);
function confirmOptIn() {
FB.AppEvents.logEvent('MessengerCheckboxUserConfirmation', null, {
'app_id':'<APP_ID>',
'page_id':'<PAGE_ID>',
'ref':"<OPTIONAL_REF>",
'user_ref':'<UNIQUE_USER_REF>'
});
setTimeout(function() {
// Send an AJAX call here with the user_ref param to a script that will call the facebook send API.
// Short delay to give facebook time to log the unique_user_ref
}, 1000);
}
</script>
<div class="fb-messenger-checkbox"
origin="<YOUR_SITE_URL>"
page_id=<PAGE_ID>
messenger_app_id=<APP_ID>
user_ref="<UNIQUE_USER_REF>"
prechecked="true"
allow_login="true"
size="large">
</div>
<input type="button" onclick="confirmOptIn()" value="Confirm Opt-in"/>
这里是服务器端的代码示例使用PHP
来调用send-API<?php
$url = "https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>";
$data = [
'recipient' => [
'user_ref' => <UNIQUE_USER_REF>
],
'message' => [
'text' => 'Hello world!'
]
];
$post_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);
var_export($response);
?>
希望这有助于!
感谢这个非常好的主意! :)我已经重新实现了Facebook和API.AI之间的连接来处理这个事件,但对于未来的机器人,我一定会使用你的解决方案,这很简单^^ – LaPataaate