【问题标题】:Need an event/confirmation if a openUrl type link is clicked in card in Azure bot node js如果在 Azure bot 节点 js 的卡片中单击 openUrl 类型链接,则需要事件/确认
【发布时间】:2021-06-25 18:42:39
【问题描述】:

我正在使用 node js 开发 Microsoft bot 框架。

我可以通过文本或卡片向用户发送可点击的链接,机器人需要知道何时点击了链接。在这种情况下,哪个事件可能有用?

或者是否有其他方法可以满足这个要求?

【问题讨论】:

    标签: node.js botframework azure-bot-service web-chat


    【解决方案1】:

    您可以使用卡片向用户发送可点击的链接。 openUrl 操作类型指定要在默认浏览器中启动的 URL。

    以下代码展示了 Node.js 中 openUrl 操作类型的示例:

    CardFactory.actions([
    {
        type: 'openUrl',
        title: 'Tabs',
        value: 'https://stackoverflow.com/q/68135796/15969417'
    }])
    

    此外,在其活动 CardAction 类型中,您可以根据需要使用以下。

    1.操作类型messageBack:从选择按钮或点击卡片的用户向机器人发送消息和有效负载。向聊天流发送单独的消息。

    属性

    • 标题:显示为按钮标签。
    • displayText(可选):用户在执行操作时在聊天流中使用。此文本不会发送到您的机器人。
    • 值: 执行操作时发送到您的机器人。你可以编码 操作的上下文,例如唯一标识符或 JSON 对象。
    • 文本: 执行操作时发送到您的机器人。使用此属性 简化机器人开发。您的代码可以检查单个顶级 属性来调度机器人逻辑。

    messageBack 的灵活性意味着您的代码不能仅仅通过不使用 displayText 在历史记录中留下可见的用户消息。

    例子:

    CardFactory.actions([
    {
        type: 'messageBack',
        title: "My MessageBack button",
        displayText: "You clicked this button",
        text: "User just clicked the MessageBack button",
        value: {property: "propertyValue" }
    }])
    

    2.动作类型invoke:从选择按钮或点击卡片的用户向机器人发送消息和有效负载。此消息不可见。

    属性

    • 标题:显示为按钮标签。
    • 值:此属性可以包含字符串、字符串化的 JSON 对象或 JSON 对象。

    Node.js 中的调用动作类型示例:

    CardFactory.actions([
    {
        type: "invoke",
        title: "B: Show me New Card",
        value: {
            option: "opt2"
        }
    }])
    

    传入调用消息示例 顶级 replyToId 属性包含卡片操作来自的消息的 ID。如果您想更新消息,请使用它。

    以下代码显示传入调用消息的示例:JSON

    {
        "type": "invoke",
        "value": {
            "option": "opt2"
        },
        "timestamp": "2021-06-28T04:11:19.614Z",
        "localTimestamp": "2021-06-28T21:11:19.614-07:00",
        "id": "f:6894910823492785420",
        "channelId": "msteams",
        "serviceUrl": "https://smba.trafficmanager.net/amer-client-ss.msg/",
        "from": {
            "id": "29:1Eniglq0-uVL83xNB9GU6w_G5a4SZF0gcJLprZzhtEbel21G_5h-
        NgoprRw45mP0AXUIZVeqrsIHSYV4ntgfVJQ",
            "name": "karthik B"
        },
        "conversation": {
            "id": "19:97b1ec61-45bf-453c-9059-6e8984e0cef4_8d88f59b-ae61-4300-bec0-caace7d28446@unq.gbl.spaces"
        },
        "recipient": {
            "id": "28:8d88f59b-ae61-4300-bec0-caace7d28446",
            "name": "MyBot"
        },
        "entities": [
            {
                "locale": "en-US",
                "country": "US",
                "platform": "Web",
                "type": "clientInfo"
            }
        ],
        "channelData": {
            "channel": {
                "id": "19:dc5ba12695be4eb7bf457cad6b4709eb@thread.skype"
            },
            "team": {
                "id": "19:712c61d0ef384e5fa681ba90ca943398@thread.skype"
            },
            "tenant": {
                "id": "72f988bf-86f1-41af-91ab-2d7cd011db47"
            }
        },
        "replyToId": "1575667808184"
    }
    

    示例:选项 B 的链接打开后返回到 bot。

    另请参考:Adaptive Cards with invoke action

    Refer: To 从选择按钮或点击卡片的用户向机器人发送消息和有效负载。向聊天流发送单独的消息,消息对所有对话参与者可见或启动 OAuth 流。

    【讨论】:

    • @KarthikBhresh-MT,感谢您的帮助。我需要发送带有 OpenUrl 操作类型的第三方链接。发送另一种操作类型可能不会在浏览器上打开链接。我正在寻找一个超链接来打开一个 URL,当用户单击该链接时,机器人会收到相同的通知
    • 是的,你可以嵌入任何 URL,就像在第一个片段中你可以看到这个 StakOverflow 帖子链接。诀窍是在按钮上发布链接,以便记录响应。
    • 我正在通过对话步骤之一发送带有调用操作的卡片,并使用“return Dialog.EndOfTurn;”返回该步骤。现在期待后续步骤中的点击操作响应,当用户点击链接时它不会到达那里。并输入任何到达下一步的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2012-08-18
    • 2016-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多