当前位置: 首页 > news >正文

Azure 聊天机器人2

1. 创建Dialogs文件夹,创建RootDialog

using System;
using System.Threading.Tasks;
using Microsoft.Bot.Builder.Dialogs;
using Microsoft.Bot.Connector;

namespace AzureBot_POC.Dialogs
{
    [Serializable]
    public class RootDialog : IDialog<object>
    {
        public Task StartAsync(IDialogContext context)
        {
            context.Wait(MessageReceivedAsync);

            return Task.CompletedTask;
        }

        private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
        {
            var activity = await result as Activity;

            // Calculate something for us to return
            int length = (activity.Text ?? string.Empty).Length;

            // Return our reply to the user
            await context.PostAsync($"You sent {activity.Text} which was {length} characters");

            context.Wait(MessageReceivedAsync);
        }
    }
}


2. Message Controller:
  

 [BotAuthentication]
    public class MessagesController : ApiController
    {
        /// <summary>
        /// POST: api/Messages
        /// Receive a message from a user and reply to it
        /// </summary>
        public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
        {
            if (activity.GetActivityType() == ActivityTypes.Message)
            {
                await Conversation.SendAsync(activity, () => new Dialogs.RootDialog());
            }
            else
            {
                HandleSystemMessage(activity);
            }
            var response = Request.CreateResponse(HttpStatusCode.OK);
            return response;
        }

        private Activity HandleSystemMessage(Activity message)
        {
            string messageType = message.GetActivityType();
            if (messageType == ActivityTypes.DeleteUserData)
            {
                // Implement user deletion here
                // If we handle user deletion, return a real message
            }
            else if (messageType == ActivityTypes.ConversationUpdate)
            {
                // Handle conversation state changes, like members being added and removed
                // Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
                // Not available in all channels
            }
            else if (messageType == ActivityTypes.ContactRelationUpdate)
            {
                // Handle add/remove from contact lists
                // Activity.From + Activity.Action represent what happened
            }
            else if (messageType == ActivityTypes.Typing)
            {
                // Handle knowing that the user is typing
            }
            else if (messageType == ActivityTypes.Ping)
            {
            }

            return null;
        }

 

相关文章:

  • 通过Socket configuration controls 获取网络设备地址
  • vim amp; emacs color Scheme
  • Azure 聊天机器人3-集成luis(语言识别)服务
  • Azure聊天机器人4-实现luis dialog
  • Oprofile工具的使用
  • C# 自然语言处理1-识别文字到语音
  • 在wxPython中使用OpenGL
  • C#自然语言处理2-识别语音并执行进程
  • Winforms:只读TextBox的文字颜色不随ForeColor的改变而改变
  • c# OpenCV -1 直接比对两张图片
  • 快速LightMap烘焙
  • c# OpenCv 2-使用haarcascade模型进行人脸识别
  • irrlicht引擎源码剖析3 - 引用计数
  • 我的官方网站正式上线了!欢迎访问!
  • C# OpenCV4 -EigenFaceRecognizer识别人脸2
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Android系统模拟器绘制实现概述
  • vue-loader 源码解析系列之 selector
  • 电商搜索引擎的架构设计和性能优化
  • 仿天猫超市收藏抛物线动画工具库
  • 利用DataURL技术在网页上显示图片
  • 深度解析利用ES6进行Promise封装总结
  • 使用 QuickBI 搭建酷炫可视化分析
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 组复制官方翻译九、Group Replication Technical Details
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (12)目标检测_SSD基于pytorch搭建代码
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4)STL算法之比较
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (JS基础)String 类型
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (分布式缓存)Redis哨兵
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (南京观海微电子)——COF介绍
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • .Mobi域名介绍
  • .net core webapi 大文件上传到wwwroot文件夹
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net6使用WebSocket与前端进行通信
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • .py文件应该怎样打开?
  • @ModelAttribute 注解
  • @ModelAttribute使用详解
  • @Pointcut 使用
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [.net]官方水晶报表的使用以演示下载
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)