Azure Notification Hub losing the subscribe when app is reinstalled - xamarin

I have a problem with Azure Notification Hub.
When my app is started in first time, the notifications working correctly, but when did a rebuild the app by Visual Studio, the notifications stop working and the Android Services with IntentFilters do not are called.
For the notifications works again, I need to uninstall the App in Android and run by Visual Studio again.
Have someone some idea about that problem?
My worry is: if I send the app to GooglePlay, the notifications would continue working after a update?
If someone know how to call the service to get the new InstallationId, always that the app to be started I will know how I can resolve the problem.
Can someone help me?
I did follow that tutorial:
https://www.youtube.com/watch?v=le2lDY22xwM&t=3312s

if I send the app to GooglePlay, the notifications would continue working after a update?
There is no need to worry about that, referring to this document, when you use Azure Notification Hub, it's using Android GCM to send the push notificcation. You could see my answer about Android using Firebase Cloud Messaging not receiving message.
As the Official document said :
On initial startup of your app, the FCM SDK generates a registration token for the client app instance. If you want to target single devices or create device groups, you'll need to access this token.
Explanation about Token :
An ID issued by the GCM connection servers to the client app that allows it to receive messages.
When you did a rebuild the app by Visual Studio your token is changed, but it didn't trigger the OnTokenRefresh method, so at this time the Token in your application is invalid. That's why your application cannot receiving message.
For more information, you could refer to Sending Push Notifications from Azure Mobile Apps and Implement the Firebase Instance ID Service.
When your app get a update, it will trigger the OnTokenRefresh method automatically, so your application can still receive the message.

Related

Bot Framework dotnet Slack adapter fails to verify Slack request when changing the Events Request Url

I have a Slack bot that is working fine and interacting with users. I'm using Bot Framework composer and the Slack Adapter.
In the Slack API portal I'm trying to change the Events Request Url the app uses to send Slack Events to my bot.
When I do that, slack sends a challenge request to my bot. The bot first tries to verify that the request is really coming from Slack following: https://api.slack.com/authentication/verifying-requests-from-slack#a_recipe_for_security
The problem is that this is failing and I can't understand why.
I see that Slack is sending all the right content, and that the ClientSigningSecret is being read, otherwise the other calls to the bot wouldn't work.
I know it's a bit far fetched to ask this since it seems to be a problem on my side. But since the bot is validating the requests just fine when users talk to the bot, and the code is from the Slack Adapter which is open source and there's nothing else I can thing of..... maybe someone struggled with the same problem.
I created a support ticket to Slack and they came back pretty quickly.
Pre publish state
Before publishing a Slack app the only configs that exist are the ones you see in the App configuration page. Those are what you use to test your app, this includes the secrets to authenticate the incoming messages from Slack into your backend.
After you publish your Slack App for the first time
Once your app is published, the production version that your users use will see the original settings, including the secrets and these are the ones your backend will get.
The settings you see in the configuration page are like development mode and they won't be persisted into the published app until you request Slack to approve your changes. That's sounds great and is what one would expect, but what you don't see and have no way of imagining is happening is that there are some development time secrets that are different from the ones you see on the settings screen.
When you change the endpoint url to be sent to your backend so that it can return the challenge and Slack would accept the new url, the message payload goes with this development secret and not the one you configured your backend with. Thus your backend will reject the call since it thinks it's not coming from Slack.
Proposed solution from Slack
Don't validate the signature of the incoming request for this type of call in an already published app. I don't like it but there was no other workaround unless Slack changes this. So what I did was:
Remove that check only for this request from the backend and publish to production.
Make the url change in Slack.
Revert the change from the backend.
:(

How to send the Message to teams using Bot Framework?

I have created one Chatbot using MS Bot Framework. Also added that in My Teams App. But not able to send messages to the users who not installed that app in there Teams. I just wanted to check if there is any provision to send the message to the users who not installed the Bot to there Teams App.
There is no way to send proactive messages to users who have not installed and interacted with your bot. Your bot has no way of knowing who those users are. If a user wants to communicate with the bot, they must install the app.
Adding to this. I ran into a similar issue where I had a Teams app that uses a notification style bot to send one-way notifications to users. The only way I was able to communicate to them was by getting the user context via an app install event. When an install event is captured, I save that users' context into a SQL database table in the event of the bot being restarted (then reload on start).
You can use the Graph API to install the bot automatically (see Proactive installation of apps using Graph API to send messages) or install it via a MS Teams app setup policies (see Install apps).

microsoft bot framework - skype for business - error

I am using Microsoft Botframework to publish a bot (Channel Registration). When I try enabling the channels , I see the bot to be working in Slack , Skype, MS Teams & Web chat . However (despite following the steps to enable bot in SFB) I could not get the bot working in Skype for Business. I keep getting the error.
"Sorry, we ran into a problem at our end."
Neither do I see any log to debug.
Waited more than 24 hrs to ensure it is not the sync issue. But issue still remains. Any help appreciated !!
I am not clear with the error as to from which end it is being thrown.
I need you to follow the below steps:
Publish Bot in azure as an app service, through VS if you are coding through c#.
Create a "Bot channel registration" in azure and connect the above app service and Bot channel registration(simple use the URL of the app service append it with /api/messages and insert the same as messaging endpoint in Bot channel registration).
use the app id and app secret in bot solution and republish the app service.
Inside Bot channel registration click on channel and enable it for Skype for business(you will find your BOT in SFB using the credentials you have used to create the bot channel registration).
Finally got it working. What i noticed is the following
I faced the issue when I used the SIP URI as somebot#mydomain.com to register the bot in my tenant.
And i got it working when I used the SIP URI as somebot#mydomain.onmicrosoft.com.
Unsure on the reasoning though :)
And btw thanks #Tanmoy for your answer aswell !!

Slack Events API / RTM: New app installed realtime notification

Is it possible to get a slack event or real time message indicating that a new app was installed in a workspace? I can figure out apps which use "bot users" by listening for team_join event. But how can i find out in near realtime about apps installed that don't have a bot user. My use case is to present something to the user when a new app is installed (as soon as possible. I can find out apps from team logs but thats not realtime).
What you're doing with the team_join event is basically all you can do. And that's going to rely on either the app having a bot user, or it being a workspace app (https://api.slack.com/slack-apps-preview), which creates an app user.
Other than that, nothing is exposed in the Events API around app installation. The other alternative is to connect up via the RTM API and watch for the bot_added and commands_changed events. That should catch most apps.

Using Microsoft Push Notification Service with Window Phone

I am thinking of a simple chat application in Window Phone using Microsoft Push Notification Service.
I read a guide at http://msdn.microsoft.com/en-us/library/hh202967(v=VS.92).aspx which talks about creating a client application that receive toast notification.
This is a first time for me to develop a mobile application so I do not get some part of it.
The question that I have is, is it possible for a client (window phone) to send toast notification directly to other client? I have found below image from the web. It seems that I need to have Cloud Application(probably webserver?) to play with notification service.
Would it be possible to build a Window phone application that directly request to MPNS to send notification to other window phone application? (so from the picture above, '2' will directly point to Microsoft Push Notification Service)
If it is not, what is the reason for that?
There is a good explanation of the push notification service here.
From the above link.
Registration Phase 2: Now that the MPNS known the presence of the
phone on the network, it is required the phone itself provide the Uri
to the Earthquake service. Until this not happen the service doesn't
know there is a phone that need to be notified so it is not able to
provide the notifications. The phone must call a method on the
Earthquake service to provide the Uri that has been answered by the
MPNS. Once the Earthquake service gets this url it can store this
informations somewhere for a later use.
In your case you'll need communication between your devices before any notifications can be sent. This is to know the uri of your phone. A server has to store these uris for all devices registered for notifications. This is why you'll need an application which sends the xml to the MPNS.

Resources