Frequently Asked Questions - Messaging

Estimated reading time: 4 minutes

How to send a message?

To send a message, just create an instance of MessageParams, populate with id and message and use the sendMessage function to send it to a user or a group.

That’s it. Mesibo takes care of everything including connection handling, retries, error handling, flow control, etc. Mesibo delivers messages instantly if the destination user is online. If not, messages will be delivered as soon as the destination user is online. This is automatic and transparent to applications, so applications sending messages do not need to worry if the receiving applications are up and running. Conversely, receiving applications need not worry about the status of the sending application.

Refer Basic concepts and real-time API reference section in the documentation for details.

How do I get the status of a message I sent?

Mesibo informs you in real-time about the status of every message sent in Mesibo_onMessageStatus callback. Refer real-time API reference section in the documentation for details.

What happens when I send messages to a user who is not online?

Mesibo uses cut-through switching to deliver your messages in real-time with minimum latency. However, if the destination is not online, Mesibo stores the messages until the user is online. If you decide not to save messages in the database, you can do so by setting a flag while sending messages using real-time API.

Can I schedule messages ?

Yes, you can use the backend API to schedule messages. Refer to the when parameter in the message API.

What is the retention period of messages stored in the database?

Mesibo offers an unlimited message retention period, only limited by the storage quota and usage. You can at any time, clear storage from the Mesibo console or using the backend API.

Does Mesibo support typing indicators?

Yes. Not only does Mesibo support typing indicators, but it also allows you to send and receive an unlimited amount of presence information such as typing, online, left, joined, etc or any custom presence information specific to your app, like shooting, tapping in a game, etc. Refer real-time API reference for details.

How do I know Online/Offline Status of a user?

The short answer is, each user has lastActiveTime. You can use it to determine if that user is Online or Offline. You can also use webhook to get an instant notification whenever the user is Online OR Offline.

However, the interpretation of Online and Offline status varies from an app to app. For some apps, it’s just the connection status, and for some , user is considered online when actively using the app while being connected. Hence, Online and Offline status requires a bit of elaboration.

In the past, apps could stay online even when running in the background. However, it’s no longer the case. Both Android and iOS will suspend the app after app moves to the background. Read more about Android and iOS background execution limits here and here.

So technically speaking, most users are offline unless they are actively using the app. When you send a message, a push notification will wake them up, and the app will be online. This still does not mean that the user is actively using the app since the message was delivered when the app was in the background. So if your app only considers the connection status as Online status, the above answer will suffice. However, if you would like to extend your app to know the active status, you can send an Online Activity (see the previous question on using Typing Indicators) based on which a remote app can decide to answer based on their `Online’ status. This is more effective but has privacy implications. Hence, based on your app policy, mesibo lets you choose the implementation.

What is Message Expiry?

The expiry represents the time within which a message has to be delivered. Expiry ranges from immediate (zero) to a few days and can be independently specified per-message basis at the time of sending messages. Mesibo will not deliver messages past its expiry. You can also set the expiry to zero for the messages that need to be delivered in real-time and not later. All messages will be retained by Mesibo until delivered or until their expiry is reached

For example, to set an expiry of 7 days you need to specify it in seconds (7 days * 86400 sec/day)

p.expiry = 604800

mesibo, faq, chat, voice, video