Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bot Framework Emulator for MacOS #11

Closed
artyomtrityak opened this issue Mar 31, 2016 · 28 comments
Closed

Bot Framework Emulator for MacOS #11

artyomtrityak opened this issue Mar 31, 2016 · 28 comments
Assignees

Comments

@artyomtrityak
Copy link

Any plans on Bot Framework Emulator for MacOS ?

@yiweiang
Copy link

+1 Would love this as well

@Stevenic
Copy link
Contributor

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.

@artyomtrityak
Copy link
Author

@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?

@swennemans
Copy link

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();

?

@Stevenic
Copy link
Contributor

@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.

@Stevenic
Copy link
Contributor

@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.

@Stevenic
Copy link
Contributor

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

@artyomtrityak
Copy link
Author

@Stevenic thanks!

@rlingineni
Copy link

Would be cool if the emulator was open sourced 😃

@swennemans
Copy link

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

@Stevenic
Copy link
Contributor

Stevenic commented Apr 1, 2016

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

@rlingineni
Copy link

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

@tomlm
Copy link
Contributor

tomlm commented Apr 2, 2016

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

@tomlm
Copy link
Contributor

tomlm commented Apr 9, 2016

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.

@tomlm tomlm closed this as completed Apr 9, 2016
@dominickm
Copy link

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?

@tomlm
Copy link
Contributor

tomlm commented Apr 14, 2016

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

@rlingineni
Copy link

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.

@dominickm
Copy link

dominickm commented May 2, 2016

@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.

@dominickm
Copy link

@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

@longsangstan
Copy link

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.

@Nixon1979
Copy link

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

@tomlm
Copy link
Contributor

tomlm commented Jun 23, 2016

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

@tomlm
Copy link
Contributor

tomlm commented Jun 23, 2016

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

@Nixon1979
Copy link

Nixon1979 commented Jun 23, 2016

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

@tomlm
Copy link
Contributor

tomlm commented Jun 24, 2016

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

@Nixon1979
Copy link

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

@JoseAntonioRodriguez
Copy link
Contributor

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 

@dandriscoll
Copy link
Member

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests