当我在瀑布对话框中使用自适应卡的输入形式时,ContinueDialogAsync 不起作用

2023-12-01

我一直在使用 EchoBot 模板,最近使用了 VirtualAssistant 模板。在之前的模板中,提交输入表单数据没有问题,但是这个模板仅仅提交输入表单数据就无法与ContinueDialogAsync配合使用。我们该如何解决这个问题呢?请帮我。

WaterfallStep的输入形式

       card.Body.Add(new AdaptiveTextBlock()
            {
                HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
                Spacing = AdaptiveSpacing.None,
                Size = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                Color = AdaptiveTextColor.Accent,
                Text = Common.PurchaseDialog_DepartureDate
            });

        card.Body.Add(new AdaptiveDateInput()
        {
            Id = "GoDateVal",
            Value = DateTime.Now.AddDays(4).ToString("yyyy-MM-dd"),
            Spacing = AdaptiveSpacing.None
        });

        if (lowestPriceQuery.tripType == "RT")
        {
            card.Body.Add(new AdaptiveTextBlock()
            {
                HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
                Spacing = AdaptiveSpacing.None,
                Size = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                Color = AdaptiveTextColor.Accent,
                Text = Common.PurchaseDialog_CommingDate
            });

            card.Body.Add(new AdaptiveDateInput()
            {
                Id = "ComeDateVal",
                Value = DateTime.Now.AddDays(8).ToString("yyyy-MM-dd"),
                Spacing = AdaptiveSpacing.None,
            });
        }

if (lowestPriceQuery.tripType == "DS")
        {
            card.Body.Add(new AdaptiveTextBlock()
            {
                HorizontalAlignment = AdaptiveHorizontalAlignment.Left,
                Spacing = AdaptiveSpacing.None,
                Size = AdaptiveTextSize.Small,
                Weight = AdaptiveTextWeight.Bolder,
                Color = AdaptiveTextColor.Accent,
                Text = "ReturnDate"
            });

            card.Body.Add(new AdaptiveDateInput()
            {
                Id = "ComeDateVal",
                Value = DateTime.Now.AddDays(8).ToString("yyyy-MM-dd"),
                Spacing = AdaptiveSpacing.None,
            });
        }

        card.Actions.Add(new AdaptiveSubmitAction()
        {
            Type = AdaptiveSubmitAction.TypeName,
            Title = "submit",
            Id = "submit",
        });

        reply.Attachments = new List<Attachment>
        {
            new Attachment()
            {
                ContentType = "application/vnd.microsoft.card.adaptive",
                Content = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(card))
            }
        };
        await turnContext.SendActivityAsync(reply, cancellationToken: cancellationToken);

迪劳格机器人,

调试时,没有任何反应var result = await dc.ContinueDialogAsync ();从输入表单提交时。

var dc = await _dialogs.CreateContextAsync(turnContext);

                if (turnContext.Activity.Type == ActivityTypes.Message)
                {
                    // Ensure that message is a postBack (like a submission from Adaptive Cards)
                    var channelData = JObject.Parse(dc.Context.Activity.ChannelData.ToString());
                    if (channelData.ContainsKey("postback"))
                    {
                        var postbackActivity = dc.Context.Activity;
                        // Convert the user's Adaptive Card input into the input of a Text Prompt
                        // Must be sent as a string
                        postbackActivity.Text = postbackActivity.Value.ToString();
                        await dc.Context.SendActivityAsync(postbackActivity);
                    }
                }

                if (dc.ActiveDialog != null)
                {
                    var result = await dc.ContinueDialogAsync();
                }
                else
                {
                    await dc.BeginDialogAsync(typeof(T).Name);
                }

您需要删除:

await dc.Context.SendActivityAsync(postbackActivity);

当机器人发送消息时,它会将对话标记为已得到响应,并且不会正确继续。

此外,您的“//Ensure message is a PostBack”代码应该更像这样:

var activity = turnContext.Activity;

if (activity.Type == ActivityTypes.Message)
{
    if (string.IsNullOrWhiteSpace(activity.Text) && activity.Value != null)
    {
        activity.Text = JsonConvert.SerializeObject(activity.Value);
    }
}

我相信您从我的旧答案中得到了该代码,此后我对其进行了改进。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我在瀑布对话框中使用自适应卡的输入形式时,ContinueDialogAsync 不起作用 的相关文章

  • 我应该把 try/catch 和“using”语句放在哪里? [复制]

    这个问题在这里已经有答案了 可能的重复 try catch using 正确的语法 https stackoverflow com questions 4590490 try catch using right syntax 我想try c
  • JSON.Net 反序列化返回“null”

    我正在使用 JSON Net 反序列化 JSON 字符串 JSON 字符串是 string testJson Fruits Apple color red size round Orange Pro
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 是否可以从 C++ 应用程序调用 C# 应用程序?

    我是一名编程学生 现在我已经上了两门 C 课程 这个学期我将参加我的第一门 C 课程 出于好奇 是否可以从 C 应用程序调用 C 应用程序 如果是的话 是否还可以检查运行该程序的计算机是否具有 NET框架 我只是很好奇 我想如果可能的话 这
  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • C free() 是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 malloc 和 free 如何工作 https stackoverflow com questions 1119134 how malloc and free work include
  • XPATH 查询、HtmlAgilityPack 和提取文本

    我一直在尝试从名为 tim new 的类中提取链接 我也得到了解决方案 给出了解决方案 片段和必要的信息here https stackoverflow com questions 2982862 extracting a table ro
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 如果 JSON.NET 中的值为 null 或空格,则防止序列化

    我有一个对象需要以这样的方式序列化 即 null 和 空白 空或只是空格 值都不会序列化 我不控制对象本身 因此无法设置属性 但我知道所有属性都是字符串 环境NullValueHandling显然 忽略 只能让我找到解决方案的一部分 它 似
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 全局使用和 .NET Standard 2.0

    我最近意识到我可以使用 C 10 功能文件范围的命名空间在 NET Standard 2 0 项目中也可以通过设置
  • while循环中的变量初始化

    我有一个可以分块读取文件的函数 public static DataObject ReadNextFile 数据对象看起来像这样 public DataObject public string Category get set And ot
  • 通过 C# Mailkit / Mimekit 发送电子邮件,但出现服务器证书错误

    Visual Studio 2015 中的 0 代码 1 我正在使用 Mailkit 最新版本 1 18 1 1 从我自己的电子邮件服务器发送电子邮件 2 电子邮件服务器具有不受信任的自签名证书 3 我在代码中添加了以下两行 以忽略服务器证
  • 如何使用递归查找数字中的最小元素 [C]

    好的 所以我正在准备我的 C 考试 当谈到递归时我有点卡住了我是大学一年级的学生 这对我来说似乎有点困难 练习要求在给定的数字中使用递归函数我需要找到最小的元素 例如 52873 是 2 程序需要打印 2 include
  • 使用多线程进行矩阵乘法?

    我应该使用线程将两个矩阵相乘 有两件事 当我运行程序时 我不断得到 0 我还收到消息错误 对于每个错误 它在粗体行上显示 警告 从不兼容的指针类型传递 printMatrix 的参数1 我尝试打印输出 还要注意 第一个粗体块 这是我解决问题
  • doxygen c++:记录由“using”声明公开的私有继承成员

    作为一个例子 我有以下课程 class A public void methodOne class B private A public Brief description using A methodOne 我还没有找到强制 doxyge
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 浮点字节序?

    我正在为实时海上模拟器编写客户端和服务器 并且由于我必须通过套接字发送大量数据 因此我使用二进制数据来最大化可以发送的数据量 我已经了解整数字节顺序以及如何使用htonl and ntohl为了规避字节顺序问题 但我的应用程序与几乎所有模拟
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • Spark RDD:如何最有效地计算统计数据?

    假设存在类似于以下的元组 RDD key1 1 key3 9 key2 3 key1 4 key1 5 key3 2 key2 7 计算每个键对应的统计信息的最有效 并且理想情况下是分布式 的方法是什么 目前 我特别希望计算标准差 方差 据
  • 二维数组与一维数组的性能

    在 C 中 m n 二维数组与长度为 m n 的一维数组 对于 m 和 n 的较大值 之间在时间和空间上是否存在差异 使用一维数组访问元素会更快吗 在 C 中 二维数组只是一维数组的简洁索引方案 就像一维数组一样 二维数组分配单个连续内存块
  • 无法在 webview 上加载地理位置

    我想将地理位置加载到 android 2 1 上的 webview 中 地理定位在我的浏览器上运行良好 但在 webview 上却失败了 public class WebPageLoader extends Activity impleme
  • Pyspark:pandas_udf、grouped_agg 的多个参数

    我正在尝试应用带有两个参数的 pandas udf 但我有这个错误 首先我尝试使用一个参数 没问题 from pyspark sql functions import pandas udf PandasUDFType from pyspar
  • re.sub 中的 python 正则表达式条件 - 如何?

    是否可以使用python的正则表达式条件re sub 我尝试了多种变体但没有运气 这就是我所拥有的 import re match anything
  • Spring - 自动装配通用接口的通用实现

    我有一个小问题 这可能是微不足道的 但我以前从未遇到过 我有通用接口和它的通用实现 我想自动装配它 但发生了错误 详细信息如下 界面 Service public interface Serializing
  • Node-Webkit (nwjs) 节点远程用法

    我想知道如果我想从服务器运行应用程序的一些逻辑 功能 是否有人可以给我一个关于 节点远程 如何工作的示例 就像 我不知道在 package json 添加 node remote hostip 后该怎么做 我的服务器应该提供什么 js 文件
  • Scala:确保大括号平衡

    我正在运行代码来平衡语句中的括号 我认为我已经得到了正确的结果 但它在一个特定的陈述上失败了 我需要理解为什么 这是测试 特别是它失败了 除了编码之外 我认为我需要修复算法 有什么指示吗 def balance chars List Cha
  • 将“Cookie”放入“CookieJar”中

    我正在使用PythonRequests库来发出 HTTP 请求 我从服务器获取文本形式的 cookie 我怎样才能把它变成CookieJar里面有饼干吗 旧版本的Requests图书馆 0 14 2和更老的 当你经过时 把新的饼干放进罐子里
  • 如何使用 Jquery 或 Javascript 更改 .CSS 文件?

    我想知道是否可以使用 Jquery 或 javascript 对 css 文件进行更改 我知道 我可以动态地将 css 属性 或类 添加到 DOM 元素 但我不想要那样 我想在 css 文件中进行更改以自定义 css 文件的 css 类 请
  • 如何为 EF Code First 配置 ProviderManifestToken

    我有一个使用 EF 代码优先的 asp net MVC3 项目 对于我的单元测试 我一直使用 SQL Server CE 4 0 和 SQL Server 2008 Express 两者都与 EF 完美配合 按预期生成我的数据库 但是 当我
  • Jackson Scala JSON 反序列化为案例类

    我有一个 JSON 其形式如下 inventory productType someProduct1 details productId Some id description some description productType so
  • 如何在 Puppeteer page.$eval 中传递函数/变量? [复制]

    这个问题在这里已经有答案了 我正在使用 Puppeteer 自动填写网络表单 每次 input 字段中的名称都应更改为数组中的不同名称 如果我直接在 page eval 函数中指定一个名称 例如 Michael 一切都会按预期工作 pupp
  • 删除序列化程序创建的空 xmlns

    我有一个由 添加服务引用 操作生成的对象 并且我使用我编写的通用序列化器手动序列化它 我的问题是数据契约有一些内部对象 序列化程序将一个空的命名空间属性添加到内部对象的起始标记中 有什么办法可以阻止这种情况发生吗 让你的内部对象与根属于同一
  • Rust 中的共享循环引用

    我正在尝试实现一个非常幼稚的线程池模型 目前线程池的职责是 create一个新线程并返回对其的引用 维护已创建线程的映射 根据线程触发的不同事件来改变线程 我的主要问题是上面的要求迫使我让线程池保持一个HashMap
  • 在 Spring Boot 2.0 中使用 Web 客户端访问 HTTPS RESTful 服务抛出异常

    我必须访问一个 https Rest Web 服务 https example com 其证书已由客户端提供 其中包含 2 个 cer 文件 我创造了keystore jks and truststore jks文件和imported th
  • 为什么 bash 中的“test -n”返回“true”?

    我想知道怎么来的 test n 返回 true 例如 if test n then echo yes else echo no fi 打印 yes 即使给出了 test 理论上 一个空长度字符串作为参数以及选项 n 它检查字符串长度是否为
  • Ubuntu,Docker - proxyconnect tcp:tls:收到长度为 20527 的超大记录

    我正在运行我构建的 docker 二进制文件 如下this 当我做一个docker pull 我收到此错误 来自守护程序的错误响应 获取https registry 1 docker io v2 proxyconnect tcp tls 收
  • 如何在处理中的draw()之后删除先前的形状

    我无法弄清楚这一点 我有一个草图 上面有一些旋转的小矩形 它们在每次绘制 时轮换 然而 之前的矩形仍然可见 我尝试移动背景 但它要么删除除一个矩形之外的所有矩形 要么不会清除屏幕 我希望能够在每次绘制后清除所有矩形 这是代码 Create
  • 当我在瀑布对话框中使用自适应卡的输入形式时,ContinueDialogAsync 不起作用

    我一直在使用 EchoBot 模板 最近使用了 VirtualAssistant 模板 在之前的模板中 提交输入表单数据没有问题 但是这个模板仅仅提交输入表单数据就无法与ContinueDialogAsync配合使用 我们该如何解决这个问题