I am a beginner in Kubernetes and using aks to deploy a chatbot. I have used nodejs and Microsoft bot framework to build the bot. I have also deployed the bot to aks using static IP and also given a DNS name to the IP.
Applying ingress controllers and cert-manager I have given an SSL encryption to the DNS name and when I open it in the browser it works stating that the certificate is fake. I want to test my bot in Microsoft bot emulator and other apps like slack, but when I try to run the endpoint on bot emulator I get the error:
The get request works but when I try to do a post request it doesn't work. I have verified using postman and it doesn't work over there also.
Could someone help me resolve this error.
Related
I've created an Watson Assistant and pasted the OpenWhisk Action Endpoint URL to my Alexa Skill as described in this GitHub Repo.
Everything worked fine so far. I was able to send questions to my Chatbot by talking to the Alexa Simulator and received the expected answer which was read out by Alexa. But if I launch my Alexa skill now I get the response "I am unable to reach the requested skill". The Endpoint URL is correct as well as the SSL Certificate Type Configuration in the Alexa Simulator. I did not change anything but suddenly it does not work but used to work fine before. Any ideas?
I tried to send the Launch Request as Manual JSON from the Alexa Simulator and received "Cannot establish SSL connection to your skill endpoint" as output JSON.
Furthermore I found the following from the Alexa Simulator logs:
"The SSL handshake to endpoint Resource [https://eugb.functions.appdomain.cloud/api/v1/web/hhzStud_AIA_projekt/default/watson-alexa-hhz-skill.json], Type [HTTP], Region [DEFAULT] failed. Please check that your java keystore is correctly configured"
I checked my acttion using the following command ibmcloud fn activation list and got an application error (IBM Docs Link)
Why can't Alexa reach my Endpoint? It used to work before without any problems.
Thanks
It appears to be an issue between Alexa and the endpoint deployed on IBM Cloud. Make sure to use https://eu-gb.functions.appdomain.cloud and not https://eugb.functions.appdomain.cloud as listed in the description.
I can access https://eu-gb.functions.appdomain.cloud/api/v1/web/hhzStud_AIA_projekt/default/watson-alexa-hhz-skill.json and it uses a Let's Encrypt certificate with below details:
A similar issue was reported in https://forums.developer.amazon.com/questions/106526/getting-ssl-handshake-failed-error.html and a response pointed towards this list of requirements for your web service https://developer.amazon.com/en-US/docs/alexa/custom-skills/host-a-custom-skill-as-a-web-service.html#requirements-for-your-web-service.
Maybe it helps as a starting point to verify what is missing.
I am trying to debug a bot which is running locally, and when i use the ngrok url on bot emulator it is returning the following error "The bot is remote, but the service URL is localhost. Without tunneling software you will not receive replies".
Any help please?
thank you.
If you are running locally you do not need to use ngrok. You just need a single .bot file with the endpoint URL http://localhost:3978/api/messages. You should not enter the App ID and Password since you are running locally (your bot won't connect otherwise, and may be why you are seeing that message). I use this single .bot file for every bot I test locally, the only reason you would need to change is if you're listening on different ports for some reason.
To test:
Start the bot via node with node index.js. If you are using the MS templates and haven't changed any settings, you'll see a message that the bot is not listening on port 3978.
Open your .bot file in the emulator with the http://localhost:3978/api/messages endpoint
Bot should connect and you can begin testing!
Note that if you are testing behind a corporate firewall and you are using services like LUIS, QnA Maker, etc., those calls will likely be blocked and the bot will error out. You do not need ngrok to fix this! The easiest way is to set your proxy via HTTPS_PROXY in your .env file (you can define it in your code too via process.env.HTTPS_PROXY but I don't recommend that since you don't want that setting in production).
Do not also set HTTP_PROXY, I'm not entirely sure why but this will prevent your bot from working.
Note that some of the native botframework connectors, like CosmosDB, don't respect the .env HTTPS_PROXY variable and those calls will fail. If you are making those API calls directly, you shouldn't have any issues.
I am developing a Bot application with the Azure Bot Framework and registered the bot on Azure and enabled direct line channel.
I have tested my application in Visual Studios (IIS Express) with Conveyor by keyoti and it works fine.
Now I need to try to run in a docker container, so I can't use conveyor so I tried a ngrok tunnel service, but when I try to run the application, I am getting an error
System.Net.Http.CurlException: Peer certificate cannot be authenticated with given CA certificates
The exception is raised on turnContext.SendActivityAsync.
NB: When I load fiddler on my machine, everything works fine, so I am not sure what the issue is.
Please let me know if there is any setting I need to do to get this working.
Any advice or help will be appreciated.?
I am using
Ver 4.1.0 Bot emulator
When I tried to use the production endpoint in the bot framework emulator. I have configured the endpoints in the bot file as below with information from the azure. But I am unable to the access it via the Emulator and also it does not connect in the "Test in Webchat" in Azure after deployment via Git to Azure. It works fine locally
It returns the following error
In the channels I see the following error triggered.
I analyzed the issue using Fiddler Trace. I think the tokens are being generated.
But the Emulator is not picking it. As seen in the below screenshot both of the fiddler and emulator refers to the same conversation ID.
what might be the issue that is triggering token failure?
I think the bot service is down at the moment.
I did deploy my microsoft bot framework app to digital ocean. It is working when you make request from browser. But from console of microsoft bot framework I can not send message from test messenger. I made all of requirements: added appid and password, set up nginx and proxy. What i had to do.
I have a bot hosted on Digitalocean, that is registered on the MS Botframework and can be accessed by Skype. So it definitely is possible.
Your endpoint at Digitalocean should be SSL (!) and the registered URL look like this:
https://www.yourregistereddomain.com/api/messages
The Bot Framework works with bots deployed on any cloud hosting service, as long as you have an internet-accessible endpoint and a valid HTTPS cert.
The Bot Framework requires that the x.509v3 certificate exposed by your endpoint be current and valid. Most of the checks for "current and valid" are standard checks for server certs: the CN must match the hostname, it must not be expired, it must not be listed in a CRL, it must have the correct set of EKUs, etc.
Most importantly, your cert must chain to a root certificate authority trusted by Microsoft. The latest list of these CAs is available here: http://social.technet.microsoft.com/wiki/contents/articles/31634.microsoft-trusted-root-certificate-program-participants-v-2016-april.aspx
For more information on deploying your bot, see: https://learn.microsoft.com/en-us/bot-framework/deploy-bot-overview
Relates to:
Bot Framework without Azure possible?
Deploy Bot in local IIS and incle it in custom chat in a webpage