【问题标题】:Can an adaptive card used in an adaptive dialog in a templated fashion?自适应卡能否以模板方式在自适应对话框中使用?
【发布时间】:2020-08-10 07:47:03
【问题描述】:

我想在一个自适应对话框中通过 SendActivity 返回一张自适应卡片。

执行此操作的代码如下所示:

new OnIntent("Help")
{
    Actions = new List<Dialog>()
    {
        new SendActivity("${Help-Root-Dialog()}")
    }
},

但是,我想在调用中包含一个参数来创建自适应卡。假设一个用户名(因此向用户个性化消息。有没有办法可以做到这一点?

【问题讨论】:

  • 好的,当我在空间中阅读更多内容时,我了解到我可以使用 SetProperty() 提供我希望自适应卡显示的属性,然后在卡的定义中引用该属性.从字面上看,例如 $(user.name)。
  • 您想将此作为答案发布吗?
  • 在查看“AdaptorWithErrorHandler”中间件时,偶然发现://向用户发送一个全面的道歉。等待 turnContext.SendActivityAsync(ActivityFactory.FromObject(_templates.Evaluate("SomethingWentWrong", exception)));它将参数传递到语言生成器指定的模板中。可能就是这个!
  • 我不明白这与您的问题有什么关系。你是说你还需要帮助吗?
  • 会根据我看到的情况给出答案。

标签: c# botframework azure-bot-service adaptive-cards adaptive-dialogs


【解决方案1】:

找到了几种方法来做到这一点:

  1. 在对话中调用卡片之前使用 SetProperty
new SetProperty()
{
    Property = "conversation.gameCreateDate",
    Value = DateTime.Now.ToString()
},

new SendActivity("${PlayGameCard()}"),
//In .lg file:
# PlayGameCard
[Activity
    Attachments = ${json(AdaptiveCard.Definition())}
]

//...
{
    "type": "TextBlock",
    "spacing": "None",
    "text": "Created ${conversation.gameCreateDate}",
    "isSubtle": true,
    "wrap": true
}
//...
  1. 调用卡片时发送参数,就像在 AdaptorWithErrorHandler 中间件中所做的那样。
await turnContext.SendActivityAsync(ActivityFactory.FromObject( _templates.Evaluate("SomethingWentWrong", exception)));

我使用了选项 1,但似乎是 2。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-06
    • 2021-12-05
    • 2018-03-24
    • 1970-01-01
    • 2021-08-07
    • 2020-10-12
    • 2019-08-19
    • 1970-01-01
    相关资源
    最近更新 更多