首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API.AI上的Facebook复选框插件

API.AI上的Facebook复选框插件
EN

Stack Overflow用户
提问于 2017-06-20 22:51:41
回答 1查看 448关注 0票数 0

我们正在使用API.AI,我们希望实现Facebook的Facebook复选框插件来连接机器人与用户。

如果我清楚地了解它是如何工作的,当用户验证包含此复选框的表单时,Facebook会发送一个事件。

有没有可能在不修改Facebook和API.AI之间的heroku应用的情况下获得活动?

感谢所有人

EN

回答 1

Stack Overflow用户

发布于 2017-10-07 07:16:06

我也一直在研究这个。据我所知,除了"messages“和”messaging_postbacks“之外,API.AI不支持任何messenger webhook事件。您需要"messaging_optins“才能接收这些事件。

虽然你不能通过API.AI接收这些事件,但我找到了一种变通方法,可以让你在api.ai和facebook之间保留当前的配置。

不必担心收到来自facebook的opt-in事件,只需在确认opt-in后立即触发facebook send API即可。

这是因为您是设置“facebook”参数的人,所以只要用户登录Facebook并选中复选框,触发确认就会将user_ref存储在Facebook的系统中,之后您可以使用相同的参数调用Facebook的API来发起与用户的对话。

下面是整个流程的一个示例:

Javascript和HTML前端。

代码语言:javascript
复制
<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的服务器端代码示例

代码语言:javascript
复制
<?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);
?>

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44656412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档