Botframework-sdk: Bot Framework Emulator for MacOS

Created on 31 Mar 2016  路  28Comments  路  Source: microsoft/botframework-sdk

Any plans on Bot Framework Emulator for MacOS ?

Most helpful comment

BTW :I am refactoring the emulation part of the code into an external lib so people can create other platform UX for it.

All 28 comments

+1 Would love this as well

Thanks for the feedback guys we'll work out some solution for Mac developers on the emulation side. Can I ask what language binding you're planning to use? With the Node version you can actually use the TextBot class to run your bot locally from a console window. While not the emulator it gets you pretty close.

@Stevenic i'm using node.js and using TextBot class for testing right now. There are some issues in Mac but i think they are not related to BotBuilder itself - skype for Mac does not support bots right now.

Also do you have any info about group chat bot support? It is in roadmap right now?

So to test on OSX you would skip using the restify server? So:

var restify = require('restify');
var builder = require('botbuilder');

// Create bot and add dialogs
var bot = new builder.TextBot()
bot.add('/', function (session) {
    session.send('Hello World');
});

bot.listenStdin();

?

@artyomtrityak I wasn't aware that bots didn't work on Skype for Mac but sounds believable. As for when group chat will come in for Skype its on my todo list. The Skype guys still have some work todo on their side like they need to add @mention support for group chats so we were going to meet in a week or two to discuss how group chat support should work in Bot Builder. No timelines yet because of that.

@swennemans If you look at the todoBot examples you'll see how I moved the dialog out to a dialogs folder and then create separate botConnectorBot.js & textBot.js files that load the same dialogs in two different modes. Basically you can create 2 versions of your bot, one for when its run from the cloud and one for when its run locally. For testing on Mac this would be my current recommendation.

We are thinking about ways we can easily port our emulator to the Mac. We'll come up with something soon.

@Stevenic thanks!

Would be cool if the emulator was open sourced 馃槂

@Stevenic awesome. Thanks for your reply. I'm really excited to dive deeper :)

I just published a new guide for how to debug a bot locally on Mac/Linux using VSCode. You don't technically have to use VSCode but the same principals will apply regardless of your setup.

http://docs.botframework.com/builder/node/guides/debug-locally-with-vscode

Oh nice. So does that only work for node.js? Is there any solution for building bots using C# and mac?

BTW :I am refactoring the emulation part of the code into an external lib so people can create other platform UX for it.

I just pushed a new emulator and along with that there is a mono based console version of the emulator which works on Linux and Mac. Go to http://docs.botframework.com/connector/tools/bot-framework-emulator/#navtitle at the bottom of the page for instructions on installing it.

Just wanted to second @rlingineni's question regarding using C# as the development language on Linux / MacOS? Is that possible?

Also, failing that. Couldn't we *NIX folks just run a small Azure instance as build machine?

Absolutely, just use Mono. There are no azure dependencies, you just need a web server running someplace.

Does anyone have a sample repo of the ChatBot on OSX using C#? I still can't get it to work correctly on my Mac.

@rlingineni @tomlm is correct. If you just have a web server running _somewhere_ and you can use C#. I've got it running with the Mac as my primary workstation using Visual Studio Code for the editor.

If no one beats me to it, I'll make a sample repo for you this weekend.

@rlingineni I realize that my answer wasn't perfect. I first created the project in Visual Studio on Windows but did the work on MacOS and ran a Mono web server.

I don't think there's a Visual Studio code template or path for creating a new project in Linux or OS X in C#? Is there @tomlm

hi, just want to confirm the mono emulator does not support Attachment(e.g. image, card)?
I was expecting it to give me some JSON response for inspection but it gives me error instead.

Hey @tomlm it looks like there is an issue with mono working with the botFramework emulator... i am getting the following error --- Can you let me know if its anything to do with the botframework or the mono installation/config. Or am i missing something... All that i did was installed mono, downloaded the emulator as mentioned on the site (http://docs.botframework.com/connector/tools/bot-framework-emulator/#navtitle) and run mono BFEmulator.exe and it fails as below

Unhandled Exception:
System.Net.Sockets.SocketException: Address already in use
at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) <0x7d7ef0 + 0x00137> in :0
at System.Net.EndPointListener..ctor (System.Net.HttpListener listener, System.Net.IPAddress addr, Int32 port, Boolean secure) <0x7d7b00 + 0x00147> in :0
at System.Net.EndPointManager.GetEPListener (System.String host, Int32 port, System.Net.HttpListener listener, Boolean secure) <0x7d0bd8 + 0x00283> in :0
at System.Net.EndPointManager.AddPrefixInternal (System.String p, System.Net.HttpListener listener) <0x7cf1d0 + 0x000af> in :0
at System.Net.EndPointManager.AddListener (System.Net.HttpListener listener) <0x7ced00 + 0x0011b> in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Sockets.SocketException: Address already in use
at System.Net.Sockets.Socket.Bind (System.Net.EndPoint local_end) <0x7d7ef0 + 0x00137> in :0
at System.Net.EndPointListener..ctor (System.Net.HttpListener listener, System.Net.IPAddress addr, Int32 port, Boolean secure) <0x7d7b00 + 0x00147> in :0
at System.Net.EndPointManager.GetEPListener (System.String host, Int32 port, System.Net.HttpListener listener, Boolean secure) <0x7d0bd8 + 0x00283> in :0
at System.Net.EndPointManager.AddPrefixInternal (System.String p, System.Net.HttpListener listener) <0x7cf1d0 + 0x000af> in :0
at System.Net.EndPointManager.AddListener (System.Net.HttpListener listener) <0x7ced00 + 0x0011b> in :0

this is because there another process using port 9000
can you issue /settings command and change your port?

@longsangstan the console emulator dumps the json of the response if there are attachments

I am unable to issue the settings command, even that is giving the same error. Also I don't think I have anything on 9000

I just updated the console app, it properly handles conflicts and prompting you for new ports.

Great... Should i download from (http://docs.botframework.com/connector/tools/bot-framework-emulator/#navtitle)?? it does not seem to be updated.

Hi, I'm using the MacOS emulator and when my bot answer with an attachment, the emulator is replaying with a 500 Internal Server Error without dumping the json, as stated above.

POST /v3/conversations/1cf91be5/activities/d89aeb29ddd24e41941297cbdca1393a HTTP/1.1
Authorization: Bearer XXXXXX 
host: localhost:9000
accept: application/json
content-type: application/json
content-length: 238
Connection: close

{"type":"message","attachments":[{"contentType":"image/png","contentUrl":"https://bot-framework.azureedge.net/bot-icons-v1/bot-framework-default-7.png"}],"from":{"id":"5e4f5dfa","name":"Bot1"},"recipient":{"id":"617d3bf8","name":"User1"}}


HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Server: Mono-HTTPAPI/1.0
Date: Thu, 22 Sep 2016 10:04:04 GMT
Connection: close
Transfer-Encoding: chunked

47
{
  "message": "Object reference not set to an instance of an object"
}
0

Then if I type /dump in the emulator it crashes:

/dump

Unhandled Exception:
System.NullReferenceException: Object reference not set to an instance of an object
  at Microsoft.Bot.Framework.Emulator.ConsoleApp.Program.Dump (Microsoft.Bot.Connector.Emulator.ConversationModel conversation, System.String input) <0x10a9560b0 + 0x002d2> in <filename unknown>:0 
  at Microsoft.Bot.Framework.Emulator.ConsoleApp.Program.Main (System.String[] args) <0x104a5e030 + 0x00910> in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
  at Microsoft.Bot.Framework.Emulator.ConsoleApp.Program.Dump (Microsoft.Bot.Connector.Emulator.ConversationModel conversation, System.String input) <0x10a9560b0 + 0x002d2> in <filename unknown>:0 
  at Microsoft.Bot.Framework.Emulator.ConsoleApp.Program.Main (System.String[] args) <0x104a5e030 + 0x00910> in <filename unknown>:0 

Please see the new cross-platform emulator. https://docs.botframework.com/en-us/tools/bot-framework-emulator

Was this page helpful?
0 / 5 - 0 ratings