如何通过 RBM 代理深层链接到应用

在移动应用中,深层链接可让用户直接转到应用内的内容。如果没有深层链接,那么当您与好友分享您在零售商店中找到的衬衫时,他们发送的该链接会将用户转到他们的浏览器,或带他们进入 Play 商店,在这种情况下,他们需要安装或打开应用,然后搜索内容。这两种情况都不会带来良好的用户体验。 通过深层链接,您可以将朋友引导至您在零售应用中找到的衬衫。

在本文中,您将了解如何借助深层链接,为您的 RBM 用户打造丰富多彩且引人入胜的体验。

将 RBM 用户引导至应用

深层链接只是指向应用的链接。您的 RBM 代理可以使用 OpenUrlAction 打开安装在用户的手机上的应用,其中网址是为您要调用的应用配置的深层链接。如需了解详情,请参阅创建指向应用内容的深层链接

我们来看一个具体的示例。如需在 Google 播客应用中打开 Google Cloud 播客,您可以使用 URI 创建 OpenUrlAction:

https://www.google.com/podcasts?feed=aHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL0dvb2dsZUNsb3VkUGxhdGZvcm1Qb2RjYXN0

许多 Google 产品均配置为支持可用作网址(如 YouTube 和 Google 地图)的深层链接。

如需从代理中触发任何此类应用,我们需要在 OpenUrlAction 中将此值指定为网址。在下面的示例 JSON 中,指定了 RBM 复合信息卡,其中包含三个开放式网址操作,每个操作指向不同的应用。

{
    "contentMessage":{
        "richCard":{
            "standaloneCard":{
                "cardOrientation":"VERTICAL",
                "cardContent":{
                    "title":"Did you know that you can open apps from an RBM agent?",
                    "description":"",
                    "suggestions":[
                        {
                            "action":{
                                "text":"Google Cloud Podcast",
                                "postbackData":"podcast_tap",
                                "openUrlAction":{
                                    "url":"https://www.google.com/podcasts?feed=aHR0cDovL2ZlZWRzLmZlZWRidXJuZXIuY29tL1JvYkNlc3Rlcm5pbm8&nord=0"
                                }
                            }
                        },
                        {
                            "action":{
                                "text":"YouTube Video",
                                "postbackData":"youtube_tap",
                                "openUrlAction":{
                                    "url":"https://www.youtube.com/embed/xSE9Qk9wkig"
                                }
                            }
                        },
                        {
                            "action":{
                                "text":"Google Maps",
                                "postbackData":"maps_tap",
                                "openUrlAction":{
                                    "url":"https://goo.gl/maps/ToMSdr4PYX62"
                                }
                            }
                        }
                    ]
                }
            }
        }
    }
}

当此 JSON 载荷在用户的 RCS 客户端中呈现时,推荐操作的图标与深层链接的应用匹配。点按任何建议的操作都会直接启动相应的应用,以使用网址中编码的内容。

带有应用图标的建议网址

原因何在?

深层链接应用的原因有多种。

身份验证

如果您的代理负责处理可能比较敏感的信息,一种有助于保护代理安全的方法是通过深层链接将用户引导至您的应用,以便通过指纹、登录或其他方式对用户进行身份验证。用户成功进行身份验证后,您可以在服务器端跟踪身份验证,并通过触发新的 RBM 消息将用户带回代理。如果您发送任何可能比较敏感的后续消息,可以在服务器端检查,确保用户已通过身份验证。如果不是,您可以将它们发回给应用,以续订其身份验证令牌。

复杂的用例支持

RBM 代理非常适合对话式交互,但应用更适合某些用例。例如,如果您经营一家家具公司,并且您打造了增强现实体验,让用户能够在家中试用家具(见下图),则您的用例只能由应用提供支持。

在这些情况下,您应该将 RBM 用户定向到您的应用执行某些功能。您的应用可以随时通过触发新的代理消息来让用户回到 RBM 对话。

应用深层链接 深层链接应用

加快付款流程

您可以使用深层链接来支持通过第三方应用付款。

例如,假设您想要支持通过虚构付款公司 AcmePay 进行转帐。通过在线调查,您发现 AcmePay 支持使用其自己的唯一 URI 结构进行深层链接,该结构可让您通过查询字符串参数传入收件人、金额和备注的值。

掌握这些知识后,您的代理只需使用为建议操作的网址部分指定的参数化 AcmePay URI 创建 OpenUrlAction 即可。

acmepay://paycharge?recipients=Jane+Smith&amount=10&note=Money+For+You!

RBM 消息的接收者点按建议的操作后,AcmePay 应用会直接启动到交易屏幕,且已填充传入的值。

如果未安装应用,会怎么样?

如果用户设备上未安装应用,深层链接行为取决于传递给 OpenUrlAction 的 URI 结构。如果设备上至少有一个应用能够识别该 URI(例如,Chrome 识别出以“http://”开头的网址),那么该应用中建议的操作会照常显示。当用户点按该操作时,URI 会在任一应用中打开并识别该 URI 结构。

如果您是应用开发者,最好使用以“http://”开头的 URI 指向您拥有的域名,从而实现深层链接,因为 Chrome 可将用户转到某个网页作为后备操作。在该网页上,您可以引导用户下载应用,或者直接将用户引导至您认为合适的使用场景。

如果 URI 使用设备上的任何应用都无法识别的自定义结构,则建议的操作将不会在 RBM 消息中呈现

为了确保系统始终显示您建议的操作,您可以使用自己拥有的网址,让网页尝试将浏览器重定向到启动应用的自定义 URI。如果设备上存在该应用,则会按预期启动。如果用户不同意,则用户会留在网页中,您可以根据需要根据您的使用情况引导他们。

以下是如何使用 JavaScript 执行此操作的示例。该脚本会尝试将用户重定向到 AcmePay 应用,但如果未安装该应用,它会将用户重定向到 Google Play 商店以下载该应用。

<!doctype html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0, maximum-scale=1.0" />
    <title>Acme Pay</title>

    <script type="text/javascript">
    window.onload = function() {
       // Launch Acme Pay app for existing users
       window.location = 'acmepay://paycharge?recipients=Jane+Smith&amount=10&note=Money+For+You!';

       // Redirect to Acme Pay app download for new users
       setTimeout("window.location = 'https://play.google.com/store/apps/details?id=com.acmepay.android';", 1000);
    }
    </script>
</head>
<body>
    <h1>Redirecting…</h1>
</body>
</html>

总结与要点

您可以使用 OpenUrlAction 建议的操作,深层链接到您拥有的应用或要触发的应用,以帮助吸引用户。通过深层链接,您可以为用户提供丰富且引人入胜的体验,或增强用于分享敏感内容的安全性。

祝您好运,编码愉快!