Is there a Slack connector for Botium? - automated-tests

From the documentation of "Container mode", it seems like Slack is supported: "...while the Chatbot operates as if it is connected to the Facebook Messenger Platform, to the Microsoft Bot Framework, or to the Slack API." However, I've been unable to find any specific reference to a Slack connector. Our product is a bot accessible through Slack. We're experimenting with Botium for direct API testing through the Simplerest connector, but would like to test end-to-end through the Slack interface if it exists. If not, are there plans for developing one?

There is one sample available (https://github.com/codeforequity-at/botium-core/tree/master/samples/connectors/docker/slack), and the Botium capabilities are described in the Wiki (https://github.com/codeforequity-at/botium-core/wiki/Operation-Mode-docker). It is not E2E-Testing, it's more a system test - when using Botium like this, your Slack bot is never connected to the Slack servers, everything is intercepted by Botium. If you alread have an API Test with the HTTP/JSON connector in place, then it possibly won't add much to your test strategy.
For E2E-Testing, Botium has a connector providing a framework for running Selenium and Appium tests on websites hosting a chatbot: https://github.com/codeforequity-at/botium-connector-webdriverio - never tried myself, but I guess it could be used for testing a Slack bot in the Slack ui as well.

Related

Facebook messenger chat bot

For this I tried two ways.
1.Using stamplay I integrated everything with stamplay (messenger & watson conversation) while deploying in npm (cli)-"stamplay init".
It is throwing an error --ssl certificate chain error.
2.Using ngrok I try to run the ngrok http 3000. It is throwing reconnecting && reconnecting
Can any one help me to reslove.
This middleware plugin allows developers to easily integrate a Watson Conversation workspace with multiple social channels like Slack, Facebook, and Twilio. https://github.com/watson-developer-cloud/botkit-middleware
#RiyaMRoy allows to you one solution.
But you can do this with 2 more options too:
Use Node-red to Integrate Watson Conversation with facebook easily.
Use NGROK, Tanmay Bakshi teaches how to do that. Check this tutorial.
I'm currently using node-red and works perfectly. You can create functions inside Node-red, and have a lot options for Business rules.

Firebase Cloud Messaging (FCM) notifications doesn't work on devices behind proxy. Is there any alternative way to solve it?

Our Android application is working over 2000 devices on field. This is a corporate app, not published on Google Play and we are managing our operations via these devices. Most important point for us: All of our client Android devices are behind proxy. (We have already take all actions on Firebase document warning about "If your organization has a firewall...")
We are testing to adapt FCM to our app for receiving notifications. We are using HTTP Protocol, sending Post requests to https://fcm.googleapis.com/fcm/send URL address, so our choice is Downstream HTTP Messages (JSON) and we are sending data messages both via Postman and also via our .Net desktop app. Firebase Cloud Messaging notifications are working successfully when device is connected to Internet via independent WiFi. It is also working successfully when device is connected to Internet via mobile network operator SIM card (No Proxy). But these methods are not a solution for us, because all of our devices are working behind proxy.
Is Firebase Cloud Messaging notifications not working on devices behind proxy? I found some bad news about FCM and behind proxy devices, but I am not sure. We want to use FCM notifications, however 3rd party extra apps is not a good solution for us. Because we are managing too many devices on field and we have also security issues. Is there any alternative solution to solve this issue about proxy?
I have received an answer from Firebase support team about this question. The answer is below:
Please note that FCM do not support Proxy at the moment, however we
will take a note of this and we could consider it moving forward. I
can't give you a definite timeline for this, rest assured your
feedback has been acknowledged. We are constantly working on providing
developers a more friendly experience hence your inputs are greatly
appreciated.
We have spent some effort and time with our app development and network team about this Proxy issue. Please note that FCM do not support Proxy at this time. I hope they can support Proxy in the future, because FCM have many benefits.
If you took the actions described in if your organization has a firewall
then the devices should be able to receive the messages.
https://firebase.google.com/docs/cloud-messaging/server#response
Please note that those action have to be taken in the network where the devices are connected, not in the network where the notification is sent.
Please note that as of 2019 Firebase has some Proxy Support, at least using Java or Node.js, see this Article about it: https://medium.com/faun/firebase-accessing-firestore-and-firebase-through-a-proxy-server-c6c6029cddb1
In case the Link is down, this is an example for Java configuration, all credits go to Hiranya Jayathilaka who wrote this great Tutorial (many thanks!)
String myProxyHost = "localhost"; // REPLACE
int myProxyPort = 3128; // REPLACE
InetSocketAddress address = new InetSocketAddress(myProxyHost, myProxyPort);
HttpTransport transport = new NetHttpTransport.Builder()
.setProxy(new Proxy(Proxy.Type.HTTP, address))
.build();
FirebaseOptions.Builder builder = new FirebaseOptions.Builder();
builder.setHttpTransport(transport);
// ... further configuration ...
Addition:
I have tried this solution and setting the HttpTransport only proxies requests to "fcm.googleapis.com", which is not sufficient in my case, because the Firebase Sdk first retrieves an Authorization Token from "accounts.google.com".
To Proxy requests to "accounts.google.com" also, I had to use System-Properties like this:
System.setProperty("https.proxyHost", proxyHost);
System.setProperty("https.proxyPort", String.valueOf(proxyPort));
System.setProperty("com.google.api.client.should_use_proxy", "true");

Can Firebase Cloud Messaging platform be used to send messages to Java SE receivers/clients?

We're looking for a solution that enables us to communicate from our app servers (Java) via Firebase Cloud Messaging (or, I suppose some similar platform) to our Java SE-based client software. Those clients are running on desktop computers.
I've done this from our servers=>android, and realize that mobile is the intended use case for Firebase, but has anyone tried something similar? Can it be done?
Can anyone point me in the direction of some resources to guide me?
Or possibly suggest alternative push technology?

How to send data from rest api to a kaa server

How to send data from rest api to kaa server without using the sdk
the above it is possible or i only can push new data using the sdk ?
I tried use the api methods but i don't know what is the appropriate
Don't think you would be able to use anything other than example SDK to send data to Kaa. Kaa SDKs have implicit info about the schemas used in the kaa server. You can use a sample SDK and modify for your own use.
REST log appender provided with kaa is very easy to use. If you face any problem then you can search for other questions related to kaa REST log appender and you would be able to find a solution. If not, pls ask for help on your specific error msg or issue. You can also refer to the question asked here

Application insights slack integration

I've recently started using application insights with a web api.
It will be really helpful to configure app insights to post error messages in a slack channel.
I've seen there is a slack connector but I am not sure how to use it, my guess is that this can be solved with the slack connector and a azure logic app, any tips? tutorials?
You may have a look at this link: https://github.com/Azure/azure-quickstart-templates/tree/master/demos/alert-to-slack-with-logic-app. I followed the instruction and it worked for me.
The tricky part is you need to click the "Deploy to Azure" button on this link page. It would redirect you to Azure Portal, and you will need to specify which channel you want the alert message to be sent e.g. #somechannel. Don't use direct message like #yourname, it has some problem with that and the logic app couldn't deploy for me.
Then you just follow the instruction to find the deployed logic app and authenticate it by logging into slack. And you also need get the logic app URI from the deployment output as in the instruction. Once you put the URI into the alert webhook, you are ready to go!
It's relatively easy to set up a slack webhook.
There's a pretty good C# nuget package for this at https://github.com/nerdfury/Slack.Webhooks
Although you'd need to set up a seperate service to poll and route the app insights data.
There's also commercial options.
getcloudbot.com allows you to hook your Azure Application Insights bundle directly into your slack channel. It's good at staying on top of your services.
Disclaimer : I run it.
You can configure an alert for your error messages https://azure.microsoft.com/en-us/documentation/articles/app-insights-alerts
And then configure sending to Slack using web hooks: https://code.msdn.microsoft.com/Create-Azure-Alerts-with-b938077a
Another quick solution to this, which doesn't involve additional code or a logic app, is to set up a Slack email integration, which provides you an inbound email address for a given channel. You can use that in Application Insights in the "Additional administrator email(s)" field.
This isn't perfect, as you don't really get a lot of details in the post to slack, but it will notify you and provide the name of the alert.
The most easiest path that I found to integrate was using an app named Slack Email which sends email alerts to slack. Once you subscribe this email id to alerts in Application Insights it will start sending the messages on the specific channel you have linked the email to.
https://teamesub.slack.com/apps/A0F81496D-email

Resources