Facebook Webviews客户聊天插件行为不一致

时间:2019-03-08 11:03:23

标签: c# facebook webview

我似乎是在误解一些基本知识,或者是我从Messenger的网络视图中看到了一些奇怪的行为。

自从我将聊天经验整合到我们网站上的“客户聊天插件”以来,问题就出现了,并且Webview页面不能很好地转换为窗口化Webview和完整的桌面浏览器视图。

为了产生按钮,我创建了一个类来表示我们的web_url按钮,如下所示:

public class WebViewButton
{
    public WebViewButton(string title, string weburl)
    {
        url = weburl;
        fallback_url = $"{weburl}&iswebview=false";
        this.title = title;
    }

    public string type = "web_url";
    public string url { get; set; }
    public string title { get; set; }
    public string webview_height_ratio = "full";
    public bool messenger_extensions = true;
    public string fallback_url { get; set; }
}

因此,基本上给定类似https://example.com/webviewpage?id=123的网址,此按钮将具有:

url = https://example.com/webviewpage?id=123
fallback_url = https://example.com/webviewpage?id=123&iswebview=false

然后,我的Web服务器可以根据聊天体验中内容的显示方式来更改内容。

根据文档,如果客户端不支持Messenger扩展,则使用fallback_url

“在不支持Messenger扩展的客户端上使用的URL [fallback_url]。如果未定义,则该URL将用作后备。只有在messenger_extensions为true时才可以指定该URL。” (docs link

通过messenger.comfacebook.com使用漫游器时,单击web_url按钮会将页面加载到普通的窗口化Web视图中,如下所示:

enter image description here

问题在于它使用的是fallback_url属性,而不是messenger.com和facebook.com上的url属性。

我的理解是,此iframe加载的网页(如上所示)表明(通过messenger.com/facebook.com)支持messenger_extensions IS ,因为它已将该页面加载到了窗口化的Webview中,但同时使用fallback_url表示不支持Messenger扩展。这似乎不正确。

如果我使用messenger_extensions = false渲染这些按钮,它将开始按照您的期望将这些URL加载到每个设备/平台的浏览器标签中。这一切都让人感到非常困惑,并使其无法依赖webview,因为它似乎并未遵循文档中建议的行为。

还有其他人看到过这种行为吗?有解决方法吗?

我了解这个错误了吗?

此刻,这对我来说似乎是个错误,但是对于bot构建和facebook平台我还是很陌生。

0 个答案:

没有答案