10

我有一个 Messenger 机器人,它为用户提供网页链接。有没有办法检测用户何时关闭 web 视图并因此返回机器人对话?

这个问题只适用于手机上的 Messenger 应用程序,桌面很好。

window.onbeforeunload不支持,window.pagehide仅适用于重新加载,但不适用于关闭 webview 以及window.unload.

4

3 回答 3

0

这实际上取决于您想要在流程中实现的目标。

如果用户使用 close-x(右上角)关闭 webview,您应该将其视为常规关闭事件,并且根本不处理任何事情。相反,您应该在 web 视图中使用专用的保存/确认和/或关闭按钮。

然后关闭按钮会触发 Messenger Extension SDK 的 requestCloseBrowser 函数,保存/确认按钮会处理实际的保存/确认/处理操作。

如果您确实需要通过使用右上角的 close-x 来检测用户关闭 webview,这只能通过长轮询(从您的 webview 轮询用户会话)来实现。

于 2019-06-25T14:43:02.490 回答
0

你可以试试用这个。

MessengerExtensions.requestCloseBrowser(function success() {
  // webview closed
}, function error(err) {
  // an error occurred
});

它与您正在寻找的不同。但是,如果您也在实施 webview 网站,您也可以通过这种方式驱动用户。

更多信息:Messenger Extension Webview

于 2018-09-30T07:10:57.237 回答
-2

很简单,我们需要使用 Facebook 的 Messenger 扩展 SDK,去年我实现了这个。你可以在这里找到相关的代码,

https://github.com/vickymicky/botkit-messenger-express-demo/commit/4aa91d12167daa322bdaddb158289b74ee9610c7

我们需要使用window.extAsyncInit来检测事件,然后我们可以将信息传递给服务器。

如果需要,使用它MessengerExtensions.getUserID来获取用户 ID。

参考https://github.com/vickymicky/botkit-messenger-express-demo/blob/master/views/webview.ejs

注意:上面的例子是在 Node.js 上完成的。

于 2017-04-19T09:37:18.257 回答