All Projects → CodeConversations → CodeConversations

CodeConversations / CodeConversations

Licence: MIT license
Code Conversations was a Demo is Scott Hanselman's keynote at Microsoft BUILD 2020. Code Conversations was designed with one goal in mind - to see if we could bring the power of .NET Interactive into Microsoft Teams, to create a way for people to have collaborative conversations about small bits of code.

Programming Languages

C#
18002 projects
HTML
75241 projects
Dockerfile
14818 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to CodeConversations

Botkit
Botkit is an open source developer tool for building chat bots, apps and custom integrations for major messaging platforms.
Stars: ✭ 10,555 (+9583.49%)
Mutual labels:  microsoft-bot-framework, microsoft-teams
msbotbuilder-go
Microsoft Bot Framework SDK for Go
Stars: ✭ 113 (+3.67%)
Mutual labels:  microsoft-bot-framework, microsoft-teams
Matterbridge
bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)
Stars: ✭ 4,452 (+3984.4%)
Mutual labels:  microsoft-teams
Botpress
🤖 Dev tools to reliably understand text and automate conversations. Built-in NLU. Connect & deploy on any messaging channel (Slack, MS Teams, website, Telegram, etc).
Stars: ✭ 9,486 (+8602.75%)
Mutual labels:  microsoft-bot-framework
Viber-and-the-Microsoft-Bot-Framework
se02035.github.io/viber-and-the-microsoft-bot-framework/
Stars: ✭ 16 (-85.32%)
Mutual labels:  microsoft-bot-framework
DirectLineAndroidSample
Android Sample for Direct Line API - Microsoft Bot Framework
Stars: ✭ 21 (-80.73%)
Mutual labels:  microsoft-bot-framework
bot-message-routing
Message routing component for chatbots built with Microsoft Bot Framework C# SDK.
Stars: ✭ 53 (-51.38%)
Mutual labels:  microsoft-bot-framework
teams-call
Shell script to detect when you're in a Microsoft Teams Call. Supports Linux and macOS.
Stars: ✭ 23 (-78.9%)
Mutual labels:  microsoft-teams
linux-teams
An unofficial Microsoft Teams application for Linux
Stars: ✭ 19 (-82.57%)
Mutual labels:  microsoft-teams
CotacaoMonetariaBot
Chatbot para cotação de algumas moedas estrangeiras para o Real (BRL).
Stars: ✭ 27 (-75.23%)
Mutual labels:  microsoft-bot-framework
Botframework Sdk
Bot Framework provides the most comprehensive experience for building conversation applications.
Stars: ✭ 6,673 (+6022.02%)
Mutual labels:  microsoft-bot-framework
twitter-bot-fw-integration
A class library with a sample demonstrating how to add Twitter as one of the Microsoft Bot Framework channels with the help of Direct Line API.
Stars: ✭ 16 (-85.32%)
Mutual labels:  microsoft-bot-framework
hands-on-bots-node
Repositório responsável pelas vídeo aulas inerentes a nova série do canal: Hands on
Stars: ✭ 32 (-70.64%)
Mutual labels:  microsoft-bot-framework
Meetingbar
Your next meeting always before your eyes in the macOS menu bar
Stars: ✭ 2,621 (+2304.59%)
Mutual labels:  microsoft-teams
Holobot
HoloBot is a reusable 3D interface that allows HoloLens & VR users to interact with any bot using Mixed Reality & Speech.
Stars: ✭ 114 (+4.59%)
Mutual labels:  microsoft-bot-framework
Serilog.Sinks.MicrosoftTeams.Alternative
Serilog.Sinks.MicrosoftTeams.Alternative is a library to save logging information from Serilog to Microsoft Teams.
Stars: ✭ 21 (-80.73%)
Mutual labels:  microsoft-teams
Microsoft-chatbot
Microsoft chatbot build using NLTK-Chatbot and django
Stars: ✭ 34 (-68.81%)
Mutual labels:  microsoft-bot-framework
MsftTeams
Module for Posting messages to MSTeams via Webhook
Stars: ✭ 35 (-67.89%)
Mutual labels:  microsoft-teams
flow-bot
Framework to make bots based on Microsoft Bot Framework.
Stars: ✭ 14 (-87.16%)
Mutual labels:  microsoft-bot-framework
Botframework Emulator
A desktop application that allows users to locally test and debug chat bots built with the Bot Framework SDK.
Stars: ✭ 1,532 (+1305.5%)
Mutual labels:  microsoft-bot-framework

Code Conversations

During the Microsoft Build 2020 keynote, Scott and Kayla show a demo early on in which they collaborate on some C# source code using a Microsoft Teams Bot. This repository contains the code for that bot, which we call Code Conversations. This readme will attempt to explain just about everything you'd need to know about Code Conversations without actually looking at the code. It will also explain a little about the reasons we chose various pieces of the topology.

How it works

Code Conversations was designed with one goal in mind - to see if we could bring the power of .NET Interactive into Microsoft Teams, to create a way for people to have collaborative conversations about small bits of code they could edit and run directly within the Teams message thread.

The Bot

The client is Microsoft Teams, with the Code Conversations bot installed. The bot can be chatted with directly in a 1:1 conversation.

Client-side

Placeholder

The bot can also be added to a Channel in which multiple team members can interact together to have a "Code Conversation."

Server-side

The bot was built using the Microsoft Bot Framework (MBF). MBF bot code runs inside of Azure App Service Web Apps.

The Web App hosting the code for the bot hosts not only the bot's web app, but the .NET Interactive executable in a background process.

Teams users have code conversations, the code of their conversations is executed using .NET Interactive, in Azure - not on the Teams users' local computers. This means the code you enter lacks access to any local resources. As the bot executes code, any standard output, like calls to Console.WriteLine(), are sent back to the user who sent in the message.

Rendering Complex Code

For more complex code sent to the bot, it presents a richer UI and uses .NET Interactive's formatter. For example, pasting JSON code like this:

var heroes = new [] {
    new {
        name = "Batman",
        secretIdentity = "Bruce Wayne"
    },
    new {
        name = "Catwoman",
        secretIdentity = "Selina Kyle"
    },
    new {
        name = "Superman",
        secretIdentity = "Clark Kent"
    },
    new {
        name = "The Hulk",
        secretIdentity = "Bruce Banner"
    },
    new {
        name = "The Invisible Woman",
        secretIdentity = "Sue Storm"
    }
};

Results in the bot rendering a rich UI that displays the data logically:

Placeholder

You can even use .NET Interactive formatting syntax and helpers to customize the HTML rendering of your code. You can see more example and experiment with the formatting api with this online notebook.

Formatter<Deck>.Register((deck, writer) =>
{
    PocketView v = div(deck.Cards.Select(c =>
    {
        var face = Enum.GetName(typeof(Face), c.Face);
        var suit = Enum.GetName(typeof(Suit), c.Suit);
        return img[src:$"https://cardsharpstorage.blob.core.windows.net/cards/{suit}{face}.png", width:64]();
    }));
    writer.Write(v);
}, "text/html");

This enables you to quickly create dynamic experiences with teammates using the collaborative nature of Teams.

Placeholder

Adaptive Cards

When the bot notices code being discussed that renders a more complex output, an Adaptive Card is rendered. Adaptive Cards render in a variety of experiences, from Microsoft Teams to HTML pages, Outlook, Windows, iOS, and Android mobile experiences. You can learn more about Adaptive Cards in the official documentation, which contains a wealth of example cards, videos on usage, and more.

If you want to build Adaptive Cards interactively to experiment, try out the web-based Adaptive Cards designer, a web-based WYSIWYG editor that runs in a web browser.

Adaptive Cards Designer

Now that we have gone over all the components that make up Code Conversations, you can try it out on your machine. Please checkout Build a Code Bot guide.

Credits

Code Conversations was built by a few folks but with the help of many teams, both directly and indirectly. This is a list of the folks who immediately contributed to the project, but we could never name all the people who worked on all the products for all the years that actually made it possible.

  • Brady For being the glue that held this experiment together. The joy and technical gudiance you brought to Code Conversations made all this possible.
  • Maria for the inspiration and vision that has evolved into .NET Interactive, which will help folks learn to code in new and exciting ways.
  • Diego for coding heroics on the bot and on the underlying magic of .NET Interactive.
  • Jon for your architectural leadership on the project and continued creativity architecting .NET Interactive.
  • Andrew for answering questions on the Bot Framework and for his wisdom and experience as we built, and for all the docs you wrote that helped us along the way.
  • Jon for the name and timeless series of the same name
  • Kayla for telling Scott all about Code Conversations during the event.
  • Scott for the idea, the support, and for being ever-inspirational.

Most of all, thank you to our community. The things you build inspire all of us, every day, to continue our mission to help you do more.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].