Inconsistent change notifications for MS Graph API - microsoft-graph-api

We are trying to utilise the Microsoft Graph API change notifications to keep track of emails in a users mailbox, however the change notifications that we receive are inconsistent to say the least. For example, I just deleted 7 emails from a users mailbox. We would expect the end result to be that the email is removed from the Inbox and added to the Deleted Items folder, but this only happens sometimes and by seemingly different methods!
Below is the notifications that we received for each email that was deleted (we are using immutable IDs to try make it more simple);
I guess this is an issue with the Microsoft service and not something that we are doing wrong? We have also tried with immutable IDs turned off but were getting equally inconsistent notifications.

Related

Is there an event payload when adding ms teams app to org?

If I upload a custom app that has a messaging bot to an MS Teams org (through admin center), is there an event payload that gets sent to the bot messaging payload that lets me know that the app/bot is added to that MS Teams tenant?
Something similar to installationUpdate event: https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/subscribe-to-conversation-events?tabs=dotnet#installation-update-event but for adding app to org (this payload event is sent for when users add app to their own MS Teams space)
No, there is no event for this.
Having it installed in a tenant doesn’t do anything except making it available for users to install. And without a user installing it, you cannot interact with the bot.
There are only two ways the app could be added to the org: either (a) by them adding the package manually, in which case presumably you gave it to them, so you should know about it, or (b) by your app being in the public App Store. In this 2nd case, you'll know it's been installed into the tenant by using the same installationUpdate event you mentioned - you can store an entry somewhere on your infrastructure (e.g. a database or otherwise) that tracks which tenants have installed the bot ever before in any channel, and if nothing is found for the incoming tenant id, it must be new.

Microsoft Graph API creates empty deleted messages after removing contact

I have a powershell script to synchronise contacts with contacts database in my company. The script works everyday in the night and there is a problem when contact is deleted. After removing a contact through Microsoft Graph Api there are two new draft e-mails in deleted items folder. First one looks like an e-mail but it has empty subject, sender etc, the second one is a deleted contact which I could restore. I'm not happy with my deleted items folder full of empty mails so I wonder how to prevent this. When I search for deleted messages those messages aren't shown so I can't delete them through api. Any idea?
Update:
I've tried beta version it didn't help.
I found out that there is the same problem when I delete contact in my mobile and outlook is not running - I can see draft empty mails in deleted emails folder.
When I search for deleted messages I can see its proper amount (i.e. I've got 150 empty draft mails) and I can see that there are 150 messages but when I try to see those messages there is none.

Fetching MUC Message History using MucSub in IOS

Every time when I’m signing into the app or reinstalling app I didn’t receive group message history. I have searched a lot for message archiving in MUC for iOS. Ejabberd doesn’t provide me old messages of the group although I configured setting into the YML file as mentioned in the attached image. I have kept history size of 10. It means at least 10 messages must be fetched every time when I login into the app or reinstall the app but I could not receive 10 messages every-time after reinstalling the app. I’m using Robbiehanson/XMPPFramework for iOS to implement XMPP based chat. I also performed MucSub based MUC to send/receive messages.
The scenario which I have performed:
I’m part of one MUC group. The member of the associated group sent 15 Messages into the group. I have received all those messages when I’m online. Now I am logged out from the group. Deleted the app from the device and reinstalled it into the device with the same login credentials. At this time I could not see the 15 messages which I received earlier. Here I would like to get all 15 Messages even after reinstalling the app into the iOS device.
I have searched on various Stack overflow questions but none of them are helpful to me. Your help will be appreciated.
Maybe you can try joining the room by specifying the history element with the maxstanzas specified.
We have similar case like we need last 3 months history while joining the room, So we mentioned that in history tag, Like below code sample
let historyElement = DDXMLElement(name: "history")
historyElement.addAttribute(withName: "since", stringValue: ((lastDate as NSDate).addingTimeInterval(1).xmppDateTimeString())!)
room.join(usingNickname: userJidString, history: historyElement)

Firebase Cloud Messaging - Send message to all users

I'm new using the Firebase Cloud Message. I built an IOS app to receive push notifications. The app works fine. I send messages from the Firebase console and they're displayed correctly.
Now I`m trying to build an web api to allow my customer to send the push messages (without accessing the firebase console). Studying the documentation here I realized that I've always to have a "to", meaning a group, topic or device id.
My question is: can I send a message to all devices (like I can do in the console)? I yes, how so?
Thanks in advance!
You can make use of topics. Given that all of your users are subscribed to a specific one. Just like what I mentioned here (removed some parts, just check them out if you want):
If you are looking for a payload parameter to specify that you intend the message for all your users, unfortunately, it doesn't exist.
Commonly, when sending notifications to multiple users, you can make use of the registration_ids parameter instead of to. However, it only has a maximum of 1000 registration tokens allowed. If you intend to use this, you can make batch requests of 1000 registration tokens each, iterating over all the registration tokens you've stored in your app server.
However, do keep in mind that Diagnostics for messages sent to Topics are not supported.
I found this:
!('TopicA' in topics)
With this expression, any app instances that are not subscribed to
TopicA, including app instances that are not subscribed to any topic,
receive the message.
So you could probably use
condition="!('nonExistingTopic' in topics)"

Gmail Mailbox updates

I have created a app in Ruby on Rails in that I want to get the all updates of the gmail mailbox, I tried with push notification provided by gmail in this link https://developers.google.com/gmail/api/guides/push but in this we get only those message related to that topic, but if i want notification on my server for all the messages then what approach should i adopt,
Please let me know if any one have any idea about it.
The topic is a separate issue from what labelIds to get changes for. The reference for watch() says that if you don't specify any labelIds in the watch, then you will get all the changes to the mailbox.

Resources