我似乎是在误解一些基本知识,或者是我从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.com
或facebook.com
使用漫游器时,单击web_url
按钮会将页面加载到普通的窗口化Web视图中,如下所示:
问题在于它使用的是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平台我还是很陌生。