首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Microsoft Bot Framework Python在使用自适应卡附件的WaterfallStepContext期间从自适应卡操作中获取提交值

Microsoft Bot Framework Python在使用自适应卡附件的WaterfallStepContext期间从自适应卡操作中获取提交值
EN

Stack Overflow用户
提问于 2020-07-17 23:33:59
回答 1查看 508关注 0票数 1

在使用WaterfallDialog的对话期间,我希望通过允许用户从选取器中进行选择来提示用户输入DateTime。提示输入DateTimePrompt只等待用户提交表示DateTime的字符串。:(

我更希望有一个DateTimePickerPrompt,机器人发送一个日历,用户只需从中选择即可。那是不存在的。

阅读后:https://blog.botframework.com/2019/07/02/using-adaptive-cards-with-the-microsoft-bot-framework/。我希望这是一种能力。特别是“对话框中的自适应卡”这一节。

下面是我尝试过的:自适应卡json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.0",
  "body": [
    {
      "type": "TextBlock",
      "text": "Select Start Date and Time."
    },
    {
      "type": "Input.Date",
      "id": "start_date",
      "placeholder": "Enter a date"
    },
    {
      "type": "Input.Time",
      "id": "start_time",
      "placeholder": "Enter a time"
    }
  ],
  "actions": [
    {
      "type": "Action.Submit",
      "title": "OK",
      "data": {
        "key": "still replies with nothing given document says only object types can be returned"
      }
    }
  ]
}

瀑布日期时间步长方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def _create_adaptive_card_attachment(self) -> Attachment:
        """
        Load a random adaptive card attachment from file.
        :return:
        """

        card_path = os.path.join(os.getcwd(), 'resources/datetime_picker.json')
        with open(card_path, "rb") as in_file:
            card_data = json.load(in_file)

        return CardFactory.adaptive_card(card_data)

    async def waterfall_start_step(self, step_context: WaterfallStepContext) -> DialogTurnResult:
        prompt_options = PromptOptions(
                prompt=MessageFactory.attachment(
                    self._create_adaptive_card_attachment()
                ),
                choices=[Choice("0"), Choice("1")],
                style=ListStyle.none
        )
        return await step_context.prompt(
            TextPrompt.__name__,
            prompt_options
        )

由于DialogTurnResult.result == None,这将被设置为无限循环。

此外,step_context.context.activity确实表示有响应,但值为None。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  'additional_properties': {},
  'type': 'message',
  'id': '68c3f2f0-c881-11ea-827f-25034e37bd5f',
  'timestamp': datetime.datetime(2020, 7, 17, 23, 1, 12, 223000, tzinfo=<isodate.tzinfo.Utc object at 0x10b39b9e8>),
  'local_timestamp': datetime.datetime(2020, 7, 17, 18, 1, 12, tzinfo=<FixedOffset '-09:00'>),
  'local_timezone': None,
  'service_url': 'http://localhost:60945',
  'channel_id': 'emulator',
  'from_property': <botbuilder.schema._models_py3.ChannelAccount object at 0x10c0d9b38>,
  'conversation': <botbuilder.schema._models_py3.ConversationAccount object at 0x10c0d9ac8>,
  'recipient': <botbuilder.schema._models_py3.ChannelAccount object at 0x10c0fc240>,
  'text_format': 'plain',
  'attachment_layout': None,
  'members_added': None,
  'members_removed': None,
  'reactions_added': None,
  'reactions_removed': None,
  'topic_name': None,
  'history_disclosed': None,
  'locale': 'en-US',
  'text': 'asdg',
  'speak': None,
  'input_hint': None,
  'summary': None,
  'suggested_actions': None,
  'attachments': None,
  'entities': None,
  'channel_data':
  {
    'clientActivityID': '1595026872220mnbwlxl2k5',
    'clientTimestamp': '2020-07-17T23:01:12.220Z'
  },
  'action': None,
  'reply_to_id': None,
  'label': None,
  'value_type': None,
  'value': None,
  'name': None,
  'relates_to': None,
  'code': None,
  'expiration': None,
  'importance': None,
  'delivery_mode': None,
  'listen_for': None,
  'text_highlights': None,
  'semantic_action': None,
  'caller_id': None
}

我使用相同的_create_adaptive_card_attachment方法进行的“第二次”尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    async def waterfall_start_step(self, step_context: WaterfallStepContext) -> DialogTurnResult:
        message = Activity(
            text = "Here is an Adaptive Card:",
            type = ActivityTypes.message,
            attachments = [self._create_adaptive_card_attachment()],
        )

        await step_context.context.send_activity(message)
        return DialogTurnResult(status=DialogTurnStatus.Empty,result={})

这将返回相同的上下文活动。

我看到了一个非常相似的问题:How to retrieve Adaptive Card's form submission in subsequent waterfall step

C#中的这种逻辑似乎就是文档中所描述的。我相信我用python正确地实现了这一点。但我似乎遗漏了什么。

因此,如果文档是真的,那么我应该能够从一个自适应卡提交操作中获得数据。这里的任何帮助都是很好的。感谢您的时间和努力。

EN

回答 1

Stack Overflow用户

发布于 2020-08-10 09:07:54

我也在做同样的事情,但是我有一个表单而不是按钮。我遵循了您所指出的blog和C#答案。卡片渲染的实现是正确的。但是,我们需要将活动的文本设置为提示可以视为结果的内容,而不是None或空值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
async def on_turn(self, turn_context: TurnContext):
    if turn_context.activity.type == 'message':
        if turn_context.activity.text == None and turn_context.activity.value != None:
            turn_context.activity.text = json.dumps(turn_context.activity.value)      
    await super().on_turn(turn_context)               
    # Save any state changes that might have occurred during the turn.
    await self.conversation_state.save_changes(turn_context, False)
    await self.user_state.save_changes(turn_context, False)

使用来自自适应卡输入的值更新文本后,这些值将在下一步中作为step_context.result可用。您将能够处理其中的值。请注意,在超前放置值检查的位置很重要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62963036

复制
相关文章
在 RN 中构建自适应 UI
移动开发的世界在不断变化,随之而来的是对能够适应任何设备或方向的用户界面的需求。React Native 提供了一套丰富的工具来构建这样的需求。
前端修罗场
2023/10/23
5030
在 RN 中构建自适应 UI
如何从浏览器中获取信用卡密码
在如今信用卡时代,信用卡盗刷案例层出不穷,作案方式也是五花八门。如中间人(MITM),恶意软件和rootkit攻击。一旦攻击者获得数据访问权限,他们会将窃取到的信用卡信息转移到他们的服务器,然后将其用于匿名支付或出售以赚取利润。 最近我们研究了几款最受欢迎的四种浏览器—Internet Explorer(IE),Microsoft Edge,Google Chrome和Mozilla Firefox是如何存储信用卡数据以及其他的安全风险。
知识与交流
2023/03/25
4.2K0
如何从浏览器中获取信用卡密码
[1111]python scorecardpy(评分卡)使用
随着互联网在传统金融和电子商务领域的不断渗透,风控+互联网的融合也对传统的风控提出了新的要求和挑战。以评分卡为例,互联网形态下的评分卡需要面临更多维数据、更实时数据、更异常数据的挑战。因此,懂得互联网业务下的风控评分卡已经成为互联网风控从业人员的新要求。
周小董
2022/04/13
3.4K2
[1111]python scorecardpy(评分卡)使用
制作SD启动卡,从SD卡启动系统
可以看到我这张SD卡的相关信息,总容量为15931539456字节,31116288个sectors,即一个sector为512字节。
哆哆jarvis
2022/08/23
3.5K0
制作SD启动卡,从SD卡启动系统
Giffgaff 卡国内使用教程(已有卡)
准备:giffgaff SIM 卡片( SIM 卡本体,最好是整个卡片),可以境外付款外币的 VISA/MasterCard 银行卡(信用卡、借记卡都可以),我使用的是中行非人哉外币借记卡。刚开始用广发美运卡,giffgaff 说不支持 Amex 的卡。 操作: 一、激活卡片
纯情
2023/04/26
7.6K0
SD卡 MMC卡 MS卡 TF卡
SD卡(Secure Digital Memory Card)中文翻译为安全数码卡,是一种基于半导体快闪记忆器的新一代记忆设备。SD卡由日本松下、东芝及美国
全栈程序员站长
2022/09/03
3.4K0
SD卡 MMC卡 MS卡 TF卡
【评分卡实现】应用Python中的toad.ScoreCard函数实现评分卡
之前的文章已经阐述了逻辑回归和sigmod函数的由来、逻辑回归(logistics regression)原理-让你彻底读懂逻辑回归、评分卡原理及Python实现。
阿黎逸阳
2023/10/08
3.3K0
【评分卡实现】应用Python中的toad.ScoreCard函数实现评分卡
hihoCoder 1051 补提交卡(贪心,枚举)
#1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序。100天过去了,小Ho查看自己的提交记录发现有N天因为贪玩忘记提交了。于是小Ho软磨硬泡、强忍着小Hi鄙视的眼神从小Hi那里要来M张"补提交卡"。每张"补提交卡"都可以补回一天的提交,将原本没有提交程序的一天变成有提交程序的一天。小Ho想知道通过利用这M张补提交卡,可以使自己的"最长连续提交天数"最多变成多少天。 输入
Angel_Kitty
2018/04/08
7590
机器学习在信用评分卡中的应用
互联网金融,特别是P2P信贷在过去几年可以说经历了大起大落的过山车。在经历了2016、2017年的高速发展后,随着整体经济环境遇冷、政策层面监管趋严,行业已进入洗牌周期。特别是随着18年7月P2P暴雷潮的出现,更是为行业前途蒙上一层迷雾。
SIGAI学习与实践平台
2018/11/14
2.7K1
机器学习在信用评分卡中的应用
机器学习在信用评分卡中的应用
Playing Atari with Deep Reinforcement Learning论文解读
SIGAI学习与实践平台
2018/12/13
1.2K0
ID卡复制教程(使用T5577卡复制4100卡)
国内常见的普通ID卡多为EM 4100 或 EM 4102卡,其特点是不可修改ID号。为了复制普通ID卡,通常采用T5577 或 EM4305卡(俗称ID白卡),其特点是内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的。
全栈程序员站长
2022/06/28
9.2K0
ID卡复制教程(使用T5577卡复制4100卡)
卡方检验在关联分析中的应用
case/control的关联分析,本质是寻找在两组间基因型分布有差异的SNP位点,这些位点就是候选的关联信号,常用的分析方法有以下几种
生信修炼手册
2019/12/17
2.3K0
Vue 中 canvas 的自适应
window.onresize 方法挂载在 mounted 方法上。(mounted 可参见 Vue 生命周期钩子)
云游君
2021/05/21
1.4K0
Wellner 自适应阈值二值化算法
参考文档: Adaptive Thresholding for the DigitalDesk.pdf
用户1138785
2019/09/11
4K0
Wellner 自适应阈值二值化算法
cf卡,mmc卡,sd卡,sm卡,xd卡,记忆棒的区别是什么?[通俗易懂]
CF卡是1994年由SanDisk最先推出的。CF卡具有PCMCIA-ATA功能,并与之兼容;CF卡重量只有14g,仅纸板火柴般大小 (43mm×36mm×3.3mm),是一种固态产品,也就是工作时没有运动部件。
全栈程序员站长
2022/09/01
3K0
MySQL中的自适应哈希索引
众所周知,InnoDB使用的索引结构是B+树,但其实它还支持另一种索引:自适应哈希索引。
星哥玩云
2022/08/17
6590
MySQL中的自适应哈希索引
DELPHI中自适应窗体的实现
我们知道,屏幕分辨率的设置影响着表单布局,假设你的机器上屏幕分辨率是800*600,而最终 要分发应用的机器分辨率为640*480,或1024*768,这样你原先设计的表单在新机器上势必会 走样。这时你一定希望表单能自己适应不同的分辨率,下面就有两种方法可供你参考。
Vaccae
2019/07/25
1.1K0
自适应采样算法在全链路跟踪中的应用
在实际生产环境中,全链路跟踪框架如果对每个请求都开启跟踪,必然会对系统的性能带来一定的压力。与此同时,庞大的数据量也会占用大量的存储资源,使用全量采样的场景很有限,大部分应用接入链路跟踪的初衷是错误异常分析或者样本查看。
架构之家
2022/07/12
8810
自适应采样算法在全链路跟踪中的应用
点击加载更多

相似问题

Microsoft C# SDK在WaterfallStepContext期间使用自适应卡附件从卡片提交操作中获取错误

12

Microsoft Bot Framework自适应卡未正确呈现

10

自适应卡提交操作

11

自适应卡中的Microsoft Bot框架图像大小

11

下载自适应卡- BOT框架

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文