Push notification on mobile


#1

Hi guys,
I got a requirement with the following usecase,

When user A create a room from mobile/web, they should be able to call (in case of mobile) like facebook, skype or hangout or worst case send push notification (mobile notification / web based notification on chrome) to user B, so that user B can join the conference.

How do I solve this issue. Can anyone give me some direction? And whether jitsi team has any plan to implement this feature at some point??


#2

This feature is very deployment specific. The jitsi team had already done that and all the hooks are there.

But you need to implement a lot of services for querying people, inviting people, the notification mechanism and this for web and mobile (wrapping the web and mobile in the appropriate apps).

There is no how-to document as this covers a lot of areas and is very complicated task, I can try giving some directions.

But if you are searching for a install and configure solution there is no such, the least you need to wrap the web and the mobile part in other applications which will handle all the user authentication and notifications whether it is push or something else of your choice.


#3

Hi @damencho thanks for quick reply. I understand the complexity. I already have my own auth service that takes care of the authentication. I am looking for direction only. like example source code if you can provide that would be really helpful.


#4

So the first thing is to implement the people search service and configure peopleSearchUrl, then the call-flow service and configure inviteServiceCallFlowsUrl.
Here it has some info about people search: https://github.com/jitsi/jitsi-meet/blob/master/doc/sipgw-config.md
Here is how the people return json should look like: SIP Video Gateway with Jibri
For the invite call flows I need to call some help from @jmacelroy for an overview, how does it work, but you need to enable this prosody module: https://github.com/jitsi/jitsi-meet/blob/master/resources/prosody-plugins/mod_muc_call.lua
You will also need to enable and the poltergeist prosody module from the same folder.

The idea, when you open the UI you will have a add people dialog, when you search for a name it will query peopleSearchUrl passing the token used to enter the conference(the jwt token that was used to open the UI), this way you can verify that this user has the right to query people. The return list of people contain names, avatars and ID. When you select one again the jwt and the id of the selected one is passed to the invite service(this way the service knows how we call from the id and who is the caller from the jwt) where you can trigger the notification to the other party, and here is the part with the call flows where I want help from Jacob :slight_smile: here you hit the poltergeist API so the participant inviting will see a poltergeist participant joining which will have the state of ringing/busy/… like in a call and later if answered will be silently replaces by the real participant.
For mobile the add people UI need to be implemented by the parent app which is using Jitsi Meet SDK.

So this is very basic overall view of the scheme that will happen, as you can see many things need to be put together.


#5

If the poltergeist and call plugins are working on your deploy then https://github.com/jitsi/jitsi-meet/blob/master/resources/prosody-plugins/ext_events.lib.lua can be fully implemented specific to your deploy. The presence changes of the poltergeist are used to trigger http calls to the specifically implemented service. This service is the one that will contain the logic for sending the mobile push events. The INVITE event contains the information the recipient needs to join the conference and triggers ringing on the recipient’s devices. A CANCEL event is used to stop the recipients ringing.

A table of which poltergeist presence will trigger the external events is found at https://github.com/jitsi/jitsi-meet/blob/master/resources/prosody-plugins/mod_muc_call.lua#L51

The idea is that whenever a poltergeist is added then it indicates the user is invited and an INVITE event is pushed to trigger ringing. Whenever a recipient responds to the INVITE by indicating busy, rejecting or answering a CANCEL is dispatched. This is done b/c it’s possible for the user to have multiple ringing device(s)

The design is guided by https://tools.ietf.org/html/rfc3261 but is modified to work with meet jitsi and generic 3rd party integrators. The combination of ext_events and poltergeist presence management allows a user to implement the following flows:

  • Successful Session Establishment
  • Unsuccessful No Response
  • Unsuccessful Busy
  • Unsuccessful Call Ignored
  • Unsuccessful Call Rejected.

[jitsi-dev] Jicofo SPoF
#6

thanks guys for the reply. I will be working on it :grinning: