sending notifications to selected multiple users - azure

In my app I have a user hierarchy in form of a tree of users
A user can send a notification to all its subordinates, including indirect.
What is the best way to achieve this with Azure Notification Hub?
I see I can choose between either registration management from device or from backend.
Leaving aside the security, I don't see too much of a difference for my scenario. I guess the tag is the user id.
If 100 users need to receive a notification, I need to call 100 times to send the notification.
Is there a better way?

Yes, in general you are right - call 100 times. Do not use 'tag1 || tag2 ...' expression to reduce number of calls because it was originally designed for broadcast.
But for the particular case it is often possible to figure out much better way to implement the things based on some limitations (number of users, max hierarchy depth etc...) and other factors. So you could describe you application in more detailed way right here or contact Microsoft support or just email me directly or we even could setup phone or Skype meeting. What does work best for you?

Related

trigger AWS Lambda function via MS teams

Is there a way we can trigger AWS Lambda function from Microsoft Teams. what I wanted to achieve is that stakeholders be able to approve merge requests from MS teams or maybe give an approval on Production rollout.
Is this connection possible at all?
Please help
Yes, this is definitely possible, but there are a bunch of things you need to do to get a full working solution, so it's hard to give it all in one answer here. Here are some guidelines to get started though:
You need a something for the user to actually "Approve", and way to do this. A common approach is to send a "Card" to Teams, which can have an "Approve" button. There are a few different kinds of cards, and different ways to send them to Teams, including a Bot, Flow/PowerAutomate (which uses it's own Bot behind the scenes) and incoming Webhooks.
When the user clicks the "Approve" (or "Reject") buttons, you need a way to handle the action (to link the button click to AWS).
If you've built Bots before, this might be the easiest option. If you want to use Flow/Power Automate, that's another option (see here for more information about important changes due "this quarter" - I'm not sure if they're released yet). If you've not used any of these, your best bet might be:
Configure an Incoming Webhook
Send a Connector Card with a "Post" button
Set the POST url to be your AWS Lambda

How to get instant changes in background from private api in mobile app?

I am planning to create a mobile application for android and ios users, i think i will take a try with xamarin since i will be alone on this project and i don't have a lots of time.
I want that the mobile app for both platform get datas from the api, then if there is new datas available we notify the user by a notification.
How the mobile will work in that kind of project? I mean should i make a background service then check every x seconds/minutes by http request? In that case which time interval? Should i use websockets instead for this case?
The app might be used by many people, so i would to know the scenario in this kind of project: Getting very fast changes, without overload the server due to too many connects or whatever else.
I'm confused about this and i need some lights around, any mobile application/server experiences related would be apprecied!
EDIT:
As suggered by an user, here additional infos:
The api is homemade, restful using JWT made in NodeJS.
Each users on their device should get messages from server asap, even when the app is in background/closed.
Maybe in the future a way to send messages between users themselves.
You have to implement push notification.
It is quite easy to implement this in xamarin. just send the push notification to the device and on the notification received call back send the API request to retrieve the updated data.
Here is the document for sending push notification from custom API.
https://learn.microsoft.com/en-us/appcenter/push/pushapi
I'm not a mobile developer, so take this with a grain of salt.
The answer to this really depends on what you're doing, which informs how often to check the API. If it's a messaging app, for example, you could have it check every couple minutes to see if there are undelivered messages, then check more frequently for the next X minutes (to facilitate a conversation in real time).
If it's a GPS navigation app to be used while driving, you'd need much more frequent requests.
As for the API, that also depends on what type of API and the number of requests you can make to it. Is it a commercial API that you get x number of calls per hour on? Is it an API that you built? Etc.
Basically, you need to give more information in order to get more specific answers.

Track multiple context for the same Bot

We have a bot that will be used by different customers and depending on their database, sector of activity we're gonna have different answers from the bot and inputs from users. Intents etc will be the same for now we don't plan to make a custom bot for each customer.
What would be the best way to separate data per customer within Chatbase?
I'm not sure if we should use
A new API key for each customer (Do we have a limitation then?)
Differentiate them by the platform filter (seems to not be appropriated)
Differentiate them by the version filter (same it would feel a bit weird to me)
Using Custom Event, not sure how though
Example, in Dialogflow we pass the customer name/id as a context parameter.
Thank you for your question. You listed the two workarounds I would suggest, I will detail the pros/cons:
New API Key for each customer: Could become unwieldy to have to change bots everytime you want to look at a different users' metrics. You should also create a general api (bot) where you send all messages in order to get the aggregate metrics. This would mean making two api calls per message.
Differentiate by version filter: This would be the preferred method, however it could lengthen load times for your reports as your number of users grows. The advantage would be that all of your metrics are in one place, and they will be aggregated while only having to send one api call per message.

setting up nexmo test messaging for classified listings

Here is what I am looking to setup & I'm wondering if it is possible:
I have a classified ads site where people can join the site and then are allowed the ability to email any listing. I would like to add the ability for people to text message listings as well.
Listing owners would add their cell numbers if they would like to be contacted via text message, the site would then allow user to text BUT it would not show real phone numbers, each listing owner would be assigned a nexmo number and if they choose to give out their phone numbers, they can.
Then, I would also like the ability to send out a general broadcast to all users. Is this possible? And, if so, how would I integrate something like this?
Yep all of that is possible with Nexmo you seem to have 3 or 4 separate use cases here so lets break those down:
When your users sign up for your site you'll want to capture their Cell numbers against their account, you might want to use the Nexmo Verify product as part of that signup to ensure you have a correct and valid mobile number.
For users to be able to add listing via text you would need to get a nexmo number for them to send their listing to, that would be one number for the whole site and you could look at the senders number to link the message to an account (from the one you captured at registration) If you don't recognise the sender of a listing message then you'll want to send back some kind of response asking them to register and a link.
For buyers to contact sellers without revealing their numbers this is a very common use case called 'Message (or Call) Proxy' you need to rent a number for each seller (or listing) so you'll need to factor that into your pricing, then you forward any messages sent to the number to the seller, you will also have to implement some logic to handle replies and track state in your application, within SMS there is no concept of a reply so each message has no association with the previous one, this is a bit tricky when you have several conversations going on over the same number.
Finally the 'broadcast' this would just be a case of iterating over the list of numbers you have for your users and sending the message to each one, you will need to ensure that you comply with any regulations around sending of bulk messages in the country you are sending to, more details for that are on the nexmo knowledgebase https://help.nexmo.com/hc/en-us

What to do when entities keeps changing in Azure Search?

I'm working on a chat-like application and would like to provide search capability for it. I was thinking of using Azure search. Once possibility is to consider each chat room as a single entity in the Azure search so that each entity represents a single chat room. The challenge I encounter is because each chat room keeps receiving new messages, the index for a chat room keeps changing. I can use a queue mechanism to queue up the changes and update my entities in the Azure Search but I don't know whether it is a good and scalable solution. Obviously I need to increase the number of replicas to keep up with the changes. Any recommendation? Is Azure search a suitable tool for such a scenario?
H.Z.,
We do have customers that use us for Chat / Instant Message based applications, so we might be viable for your needs. Before I answer your questions, can you tell me what types of things you would want to be able to search?
Is it merely to search the chat rooms or is it to search both chat rooms as well as the messages within these chat rooms? If it is just to search the chat rooms, you might want to consider going your suggested approach and then store the chat messages in a lower cost store (such as Azure Storage) and then simply pull in the message text as needed.
If it is the latter, then the next question would be whether you want to be able to do a search that spans both chat rooms and the messages within them which would indicate that it makes a lot of sense to have them within a single index, although whether you put all messages in a single document or have one document per message we should drill into a bit more. The main issue I would think of with having all messages in one index is in the case where a user wants to drill into (or filter) specific messages within a chat room. I am thinking this might be a little harder then if you split messages into separate documents.
Another option might be to have 2 indexes. One that has the chat rooms and then another that has the individual messages within them.
In any case, I hope that helps as a start and based on your responses hopefully I can help you drill into the details more.
Liam

Resources