How to make my chat-bot accessible from a web page? - botframework

I've got my Node.JS bot builder chatbot all working in the emulator, but I'm not sure how I can get started in allowing my bot to be chatted to by others through the internet, on a web page.
I've seen this article, but this seems to be if we want to host the both through Azure. Additionally, I'm not sure how I'd link the code I made for the bot with this.
This is for a school project for a local company, so I'm fairly sure (and will ask) that they want this to be free to run on their own servers, instead of paying Microsoft.
Can anyone help me understand how this all works?

If you're using MS Botframework & LUIS, you will have to host your webhook somewhere to make it accessible to public. Now, if you do not want to spend a penny for hosting services, I'd like to suggest you one more bot platform dialogflow.com (api.ai) where they have built-in inline editor (Powered by Cloud Functions for Firebase). You will just have to write your code there & say deploy. You won't be charged unless you're using a standard edition.
Now, second thing, if you do not want to do any of these & still want to make it public, you will have to have your own servers & all & expose your IP. Put that computer in the DMZ of your router. That is what it is for. Or, simply forward the needed ports. But here you will have to manage everything on your own like if a server goes down etc. Hope this helps.

Related

Question about deploying a Shopify app to Heroku

I have question about Shopify app development and the deployment process.
I've used the getting started guide here, and I have an app that works fine when I use npm run dev and view the app in the store admin.
However, of course, once I stop the server from running, the app is no longer accessible.
I believe I need to deploy the app to Heroku (or something similar) in order to have it work in a non-development environment.
It doesn't seem like there is much guidance online from Shopify about the best way to go about this.
Does anyone know what steps I need to take in order to deploy my app to Heroku, so that I can use the app in by test store on another device?
It seems like every guide online stops JUST BEFORE explaining this process and I can't figure out why! I have tried everything online but nothing has worked:
Adding the code to Github and connecting it to Heroku
Using Docker
Any help is appreciated. Thank you!
You have zero obligations to use Heroku. If you have an IP address dedicated to your house, you could host the App using your house. If you co-locate your own server at an Internet business, and they give you IP addresses you can use that. If you wanted to use Amazon directly, you could use EC2. If you wanted to use Linode, or Azure, or any other cloud service, feel free! It is up to you!
Using Heroku (built on AWS) is traditional only in the sense that it is the original easy peasy hosting in the cloud service. Play with Heroku by reading Heroku-specific documentation or hosting information. This has nothing to do with Shopify. Shopify only mentions Heroku because traditionally, developers used it. No other reason.
If you want to learn how to use Heroku, 100% there are blog posts within easy reach for you to study and learn from.

Run Bot and Tabs from Microsoft Teams Toolkit locally at the same time

I used the MS Teams Toolkit extension from within VSCode to generate my Teams app. I want to run it locally while developing, for obvious reasons.
I added a bot and a tab. However, two folders get created, each with their own package.json and associated scripts.
I've followed both READMEs, but as I suspected, you can't seem to run the bot and the tabs at the same time since ngrok does not allow two http tunnels at once. On top of that, I'm getting randomly generated ngrok addresses.
My company has a paid ngrok account so that I can register domains, which I have done already.
How does one go about running the Tabs AND the Bot from this project? And how can I set static ngrok adresses so I don't have to change my bot endpoint on Azure every time?
Thanks!
Note: I have tried using yo teams generator, but the project scaffolding is, to me anyway, atrocious.
It's possible with ngrok, even the free version, to run multiple tunnels at the same time, so you could bind multiple addresses, which is what you need (I do this also a lot when I'm running an app with both a Bot and a Tab). Have a look at the ngrok docs for this over here.

Publicly expose local [ASP Web-] API

I'm trying to expose an ASP WebApi to the internet for testing purposes. I thought that this can't be too difficult, but here I am, asking for help. I'm a novice when it comes to networking so please, be as explicit with instructions.
When I run my API application locally, hitting https://localhost:44316/{api-method} (or http://localhost:49511/{api-method}) executes the API method. How can I configure IIS/my machine/firewall/whatever-I-need-to in order to be able to hit the API at https://<my public IP>:44316/{api-method} (or http://<my public IP>:49511/{api-method})? The ports 44316 and 49511 are defaults, I didn't select them (I'm guess that's obvious and probably irrelevant).
I'm also working on an Azure VM (this may or may not be relevant) and have added endpoints on ports 44316 and 49511 (both public and private, and not behind load balancing) already.
Additionally, I'm not overly concerned by security (though more knowledge won't go amiss) as I'll teardown anything that I've set up to get this working once I've done with testing.
You're on the right track. Adding the endpoints in the Azure portal is one step. You'll also need to open them on your Firewall if you have one up. The way to do this depends on what kind of server you're running. Assuming it's a Windows 2012 server, go to the Server menu, check Tools -> Firewall, and add Rules for inbound and outbound on the ports that you want.
One thing to note is that Azure doesn't respond to 'ping' commands in the expected way, so it may not look like your rules are working if you're just using Ping to test. However it will work with your API.
I have a blog post that breaks down steps to run a multiplayer game using Azure which shows the Firewall setup. Steps 6, and 10 are the important ones but you've already done 10. http://secondtruth.com/2014/12/how-to-simulate-a-tiny-universe-in-azure/
Here's the Windows 2012 Firewall setup in particular http://www.rackspace.com/knowledge_center/article/managing-the-windows-server-2012-firewall

How to map a wildcard domain to a Windows Azure Website instance?

When creating a "web app" it is common to use a wildcard domain and have each client or instance of the web app on its own sub domain. Windows Azure does this themselves, for example "yourwebsite.windowsazure.net". For some unknown reason, wildcard subdomain support seems to not be there for Windows Azure Websites. I'm very frustrated with this fact, so much so as to abandon Windows Azure all together.
Is there a work around to not having to manually enter every domain name individually that you want authorized? Is there an API for this? I have a particularly hairy requirement in that I have over 100,000 sub domains I would need to do this for before I could even consider moving to Azure.
Please look deeply into this issue if you attempt to answer it as I have already and saw no other option other than manually entering through the portal.
I suspect that you're right, and that Windows Azure Web Sites don't support this. You could, however, use a Cloud Service with a web role.

How to use Windows Azure in Indonesia?

I plan to implement my website (asp.net & sql2008) using windows azure, but I have difficulty to do it because windows azure has not released yet in my location (Indonesia).
Should someone like to share the solution the same with my problem would be appreciated.
The question was asked on MSDN and the answer is that it is not possible. The only solution is to wait for Windows Azure available in your country.
MSDN Forum
Just run your apps on HK or Singapore Windows Azure Public Data Centers, these are the APAC Data Centers for your region.
for testing reasons, I wanted to create an Azure account, and faced the same here in Egypt.
I've made it by remotely logging into one of our U.S-based servers, and registered from there :) If you can't do so, and need this account badly, and don't have such server, try using TOR.
Update: TOR is a proxy-like solution for your internet connection, it will redirect all requests/responses to a node on the TOR network, which consists of volunteers like you and me.
so my solution is simple, we gonna use tor to simulate that you are inside one of the permitted countries, and register your account with ease.
what you gonna need is to install TOR and configure your browser to use it, but my personal recommendation is to install TOR browser bundle, it's TOR+a Browser that is pre-configured to use it.
you gonna find a nice video on the TOR browser bundle page that will give you an overview about it.
give it a try, and tell me what happened.

Resources