当前位置: 首页 > 面试题库 >

将消息从Facebook Webview发送回给机器人

阎懿轩
2023-03-14
问题内容

已为Facebook Messenger的ms bot框架编写了bot,该bot
使用自定义渠道数据附件创建了轮播,并启用了Messenger扩展:。我们已经在Webview页面上添加了Messenger扩展,但是目前尚不清楚如何将 带有附件的*
消息从该Webview页面发送回Messenger,从而发送回bot框架。web_url``"messenger_extensions": true
*

<!DOCTYPE html>
<html>

<body>
    <style type="text/css">
        .button {
            background-color: #4CAF50;
            /* Green */
            border: none;
            color: white;
            padding: 15px 32px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            width: 50%;
            margin: 25%;
        }
    </style>

    <button type="button" class="button" onclick="sendMessage();">Complete Booking</button>

    <script type="text/javascript">
        function sendMessage() {
            alert('Booking completed. What to do now? How to send the message back to bot?')
            /// how to return? the facebook docs don't say anything
            /// you HAVE to make a server round trip.. https://stackoverflow.com/questions/43956045/messengerextensions-how-to-send-a-message-by-messenger-to-users
            return {
                text: "HOTEL_SERVICE_PAYLOAD",
                attachments: [
                    {
                        email: "some@email.com",
                        hotelName: "Hotel marriott",
                        confirmNumber: "1234567"
                    }
                ]
            }
            MessengerExtensions.requestCloseBrowser(function success() {

            }, function error(err) {

            });
        }

        (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.com/en_US/messenger.Extensions.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "Messenger"));

        window.extAsyncInit = function () {
            // the Messenger Extensions JS SDK is done loading
            MessengerExtensions.getUserID(function success(uids) {
                var psid = uids.psid;//This is your page scoped sender_id
                alert("Getting PSID")
                alert("This is the user's psid " + psid);
            }, function error(err) {
                alert("Messenger Extension Error: " + err);
            });
        };
    </script>
</body>
</html>

阅读了大量的文档和博客,。

页面上是否嵌入了JavaScript脚本的简单示例?谢谢!


问题答案:

如果我理解正确的问题,则可以设置一个触发消息发送的API端点,并在`MessengerExtensions.requestCloseBrowser()的成功回调中命中该端点。

使用jQuery和node的express模块​​的示例:

网页浏览:

window.extAsyncInit = function () {
    // the Messenger Extensions JS SDK is done loading
    MessengerExtensions.getUserID(function success(uids) {
        var psid = uids.psid;//This is your page scoped sender_id
        $.post('https://myapi.com/sendOnWebviewClose', {"psid": psid})
    }, function error(err) {
        alert("Messenger Extension Error: " + err);
    });
};

服务器

app.post('/sendOnWebviewClose', (req, res) => {
  let psid = req.body.psid;
  sendMessage(psid);
})


 类似资料:
  • 我有两个问题与编程电报机器人的PHP。 问题:当我尝试使用电报API发送更多行的文本时。根据此代码: 我在电报机器人中的文字如下: “这是我的短信。这是新线。” 你能帮我做这个吗? 谢谢你

  • 我不知道如何使用电报机器人诱导(触发)本地服务器向通道发送消息。 例如,从用户注册并连接电报的网站向用户发送通知。我们假设用户已经开始与bot对话,并准备好接收来自bot的消息。 我有一个单独的服务器,可以使用bot向服务器发送请求,但我不明白如何在这个电报机器人服务器上接收和处理请求。 我正在使用go电报-机器人-api库,此时服务器使用长轮询方法而不是webhooks。所以它通过更新通道接收一

  • 每次机器人被邀请到服务器时,我都想发送一条消息。然后它应该写这样的话:“你好,这是我的不和机器人” 到目前为止,我有这个代码,它不会产生错误,但也不会发送消息。

  • 请不要说“已经回答”,因为我尝试了一切,包括这里的所有相关帖子,显然,我正在阅读api文档。 完全错误为: 忽略on_ready Traceback(最近一次调用)中的异常:文件“/usr/local/lib/python3.8/dist packages/discord/client.py”,第312行,在on_ready wait channel中的事件wait coro(*args,**kw

  • 我目前正在制作一个discord bot,并希望在服务器加入时在服务器的通道中发送一条消息,这是我到目前为止的代码。 当我运行这段代码时,什么都不会发生。我没有得到任何ERORR或输出。 如果有人能帮忙,那就太棒了。谢谢

  • 我正在编写一个定制的Android Wear应用程序,该应用程序应该向连接的主机设备(手机)发送一次性消息。通过对API的深入研究,我发现以下教程应该可以很好地工作:http://developer.android.com/training/wearables/data-layer/messages.html 我的Android应用程序有一个WearableListenerService,我的An