我使用VS Code开发已经有蛮长一段时间了,时间长了,越来越喜欢VS Code,虽然有些时候会没有传统的VS方便,比如开发Azure Function时你需要编写一下launch.json,而且你需要手动启动StorageEmulator,但是也正是由于缺少VS的自动配置,需要你自己手动把环境一步步搭建出来,也让自己更加理解一些框架和技术。

最近练习做一个简单的docker image,并且想做一个windows上的image,但是下载一个server core的image让我崩溃了,虽然能够下载,但是那个速度简直疯掉了,等待一个晚上下载完成后,我做了一个image需要upload到ACR,那个叫龟速,而且我稍微一改代码就要重新build,重新docker build,重新docker push。虽然我的layer很小,而且ACR也选择了离我最近的region创建的,但是一次push我都可以完成一杯咖啡了。

后来,我突然想到了VSCode的Remote功能,立刻在云端创建了一台linux虚机,在上面做开发,瞬间感觉到了云时代的优势了,虽然我的虚机配置很低,但整个docker build,push过程比在本地快了起码10倍,而且VScode的remote体验很好,基本感觉不到在remote的感觉。

所以我想在这篇博客里介绍了一下,如何在VSCode Remote环境下开发Teams Bot。如果你还没有remote环境的话,可以参考 这个 来搭建一个remote的开发环境,然后安装最新的 dotnet SDK

先ssh到远程,我们先创建一个简单的webapi

$ mkdir test-bot
$ cd test-bot
$ dotnet new webapi

在VSCode里打开这个远程folder。打开test-bot.csproj,增加这两个package

  <ItemGroup><PackageReference Include="Microsoft.Bot.Builder.Integration.AspNet.Core" Version="4.9.2" /></ItemGroup>

打开Startup.cs文件,简化Configure方法

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env){app.UseRouting();app.UseEndpoints(endpoints =>{endpoints.MapControllers();});}

到controller目录下,创建一个新的BotController.cs

using System.Threading;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Bot.Builder;
using Microsoft.Bot.Builder.Integration.AspNet.Core;
using Microsoft.Bot.Schema;namespace test_bot.Controllers
{[Route("api/messages")][ApiController]public class BotController : ControllerBase{private static readonly IBotFrameworkHttpAdapter Adapter = new BotFrameworkHttpAdapter();[HttpPost, HttpGet]public async Task PostAsync(){await Adapter.ProcessAsync(Request, Response, new EchoBot());}}public class EchoBot : ActivityHandler{protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken){var replyText = $"Echo: {turnContext.Activity.Text}";await turnContext.SendActivityAsync(MessageFactory.Text(replyText, replyText), cancellationToken);}}
}

我还需要一个工具ngrok,先在remote运行下面这个命令安装ngrok,然后启动ngrok

$ sudo snap install ngrok
$ ngrok http 5000

在本地启动bot emulator,增加一个bot endpoint,输入上面ngrok产生的一个url

因为我们是用本机的bot emulator连到另一台机器的bot service,所以我们本地的bot emulator需要配置本地ngrok的路径,如下图:

完成后,我们就可以在emulator里打开这个bot,发送文字,然后就可以收到你的remote bot的回复了。 :D

在VSCode Remote环境下开发Teams Bot相关推荐

  1. vscode ubuntu 环境下ssh 远程连接 不稳定 重新打开

    vscode ubuntu 环境下ssh 远程连接 不稳定 重新打开 只需要主机重启.

  2. 【storybook】你需要一款能在独立环境下开发组件并生成可视化控件文档的框架吗?(一)

    storybook 介绍 入门 说说用法 prop-types .stories.jsx 下一篇: https://blog.csdn.net/tuzi007a/article/details/129 ...

  3. 关于在Office 2010,Visual Studio 2010环境下开发Office 2007解决方案的问题

    Office解决方案分应用级解决方案(application-level solution 也就是Add-in)和文档级解决方案(document-level solution包括Excel temp ...

  4. vscode remote ssh_win10 下安装Vscode

    一.安装 1. 下载软件包 image.png image.png image.png 2. 安装 image.png 接下来手动编辑一个指定路径,用于存放安装的程序文件 路径会被自动创建 image ...

  5. VSCode PlatformIO IDE 下开发ESP32遇到的问题

    最近尝试在VSCode PlatformIO IDE下用ESP32做些小东西,网上VSCode PlatformIO IDE环境配置的资料很多,但是即使一步一步照着做,还是会遇到很多问题.希望把这些问 ...

  6. 如何开发Teams Bot

    很多朋友问我如何开发一个成功的Teams Bot,他们说Bot Framework SDK看起来简单,但是真要的去开发一款成熟的bot,很多地方还是不知道如何使用.我从最早的bot framework ...

  7. netbeans+j2mepolish 环境下开发黑莓(BlackBerry) 程序

    近日公司要求把之前做的一个 j2mepolish 项目在 BB 上运行.我是一个新手,所以一星期了,还是有小部分bug, 没能成功运行.下边是我对 BB 应用程序开发的一些见解: BlackBerry ...

  8. Maven工作笔记-在内网环境下开发Spring Boot(使用IDEA)

    目录 过程 要注意的问题 过程 这里就简单记录下,以前在外网环境下,现在使用内网,如何去操作呢.只要把以前外网机的Maven库里面的Repository考到对应的内网机器中的Maven下的Reposi ...

  9. 在桌面Linux环境下开发图形界面程序的方案对比

    在Linux下开发GUI程序的方法有很多,比如Gnome桌面使用GTK+作为默认的图形界面库,KDE桌面使用Qt作为默认的图形界面库,wxWidgets则是另一个使用广泛的图形库,此外使用Java中的 ...

最新文章

  1. 关于python的打包打包完生成exe文件之后,不能正常执行程序的问题解决。
  2. 等待链表_调度(准备运行)链表
  3. 还原数据库:The backup set holds a backup of a database other than the existing database……
  4. 【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究
  5. 错误make: nvcc: Command not found 解决方案
  6. 悟空php微信复制的东西在哪找,微信收藏的文件在哪?从哪里能看到?
  7. javascript之Partial Application
  8. springmvc与mybatis整合之实现商品列表
  9. html5 新标签xss,HTML5 localStorageXSS漏洞
  10. 清理tomcat服务器日志文件,Tomcat日志配置与清理
  11. 【FXCG】如何成功启动SWOT分析法
  12. 谷歌浏览器如何在不登录的情况下保存书签
  13. mysql 14 关闭休眠链接
  14. 【2k行代码优秀课设】基于stm32f4xx粤嵌GEC-M4的按键密码锁、呼吸灯、蜂鸣器音乐、超声波测距及倒车雷达、温湿度检测、光敏电阻自动灯光调节、USART串口控制系统
  15. CertPathValidatorException:validity check failed
  16. k近邻算法python_k-近邻算法的Python实现
  17. 【博弈论】Nim游戏
  18. ACM日历题新版(界面修改+国际节日)
  19. TP,TN,FP,FN,F1,TPR,FPR (一图看懂)
  20. 关于AWS云主机EC2的一些常用操作

热门文章

  1. 成功,要“借力”,不要“尽力”(深刻!)
  2. windows比linux差在哪,怎么让新手理解Linux比Windows好在哪里!
  3. html5 保存 搜索历史,html5 – 如何有效处理Dart中的浏览器历史记录(即后退按钮)?...
  4. Hibernate懒加载问题
  5. python 多继承的问题
  6. 书呆子rico_寻找设计和类型书呆子的清道夫
  7. 一篇文章助你理解Python3中字符串编码问题
  8. v-if v-else-if v-else
  9. jhope代码分析以及网站结构
  10. 9月11日学习内容整理:正则表达式,re模块