How to Send Message to all Users In Openfire? - xmpp

I want to send message to all users in openfire . I have knew the Broadcast Plugin . But it can send message to only online users . But i want to send message to all users of openfires . Please help me out is there is any plug in or other way to send message to all users .

From official specifications, just use Broadcast Plugin configuring it properly with this param:
plugin.broadcast.all2offline -- true to deliver broadcast messages sent to all#[serviceName].[serverName] to online and offline users. When false or not set only online users get the messages as described below.
So just add this parameter
by Admin Console panel (Server -> System Properties -> "Add new
property" on bottom )
or by adding this value on OFPROPERTY table on database.
An Openfire restart can be required.

Related

Ejabberd Message delivery while application is terminated

I am developing a chat app using ejabberd server for both IOS and Android. I also wrote a module for ejabberd to get the offline messages sent to my own server api .
my own server api will send notifications to the IOS/Android platforms using FCM.
On the client side , if the application is in the foreground or the background , it will stay connected to ejabberd and if the client receives the message then ejabberd will send the message delivery status.
I am facing an issue while the app is terminated ( service is not running ) which means it is not connected to ejabberd (offline) . if i send a message to this app while it is not terminated , it will receive a notification but the message still undelivered . how can mark the messages as delivered when receiving the notification while the app is terminated.
to explain it more , the same functionality is working fine with whatsapp :
device A has whatsapp installed and whatsapp was turned off (terminated)
Device B has whatsapp running
Device B sends a message to device A
Device A receives a whatsapp notification
Without doing anything on Device A , the message status on Device B is marked as delivered .
How can I implement this scenario with ejabberd ?
In case someone went into this issue , here is the solution that I implemented with help of #Mickaël Rémond from his answer.
I configured ejabberd to send the offline messages to an http service ( your own server) please refer to this link for further on how to do it
your server should catch the above call and generate a notification message (FCM ) in my case and send it to recipient device
recipient device will catch the notification which includes the message
recipient device will call http service (your own server backend)that responsible for sending the deliver ack to the original sender . you need to pass from, to , stanzaId , vhost with this call
backend server will use ejabberd-api (set of exposed apis to manage ejabberd through rest apis calls) to send delivery message using this api
please note the following notes also :
sending the delivery message from your own server to ejabberd will not delete them from ejabberd database
if the user re-connected to the ejabberd server then the recipient will receive the message again from ejabberd .
It is probably too complex for a simple Stack Overflow question, as you need to integrate several moving part on client and server:
You need to execute code in background when receiving push notifications on iOS (you need that property set on your app in your app provisioning profile and have code to handle that). The client will initiate an HTTPS query to let the server know that the message was delivered.
You need to have an endpoint that will get the delivered HTTPS calls and generate either a message ack or a chat marker on behalf of the user and route it in ejabberd.
In real world, this is not enough if you want to take into account the fact that you can only have 1 push in the queue on APNS. If you have several messages sent while the device is not on the network, you will need to have the device check all received messages while offline on the server, otherwise you will lose messaging.
You need to rely on XMPP Message Archive Management (MAM) to handle that history.
As you see, this is not a simple few tens of line of codes but need real design and involved work.

How can I get last message of each conversation(per JIDs) from openfire?

I'm developing an instant messaging app on android with SMACK library that uses OPENFIRE as a xmpp server. I want to get last message of each conversation from MessageArchiveManager in openfire server that was enabled by MONITORING SERVICE plugin(based on XEP-0313).
I know that mamManager.queryArchive() can gets the messages that related to specific jid or can get a specific number of messages that exists in server(with no custom sepration), but we suppose that smack doesn't knows which JIDs has conversation on server!
One solution is that send request per each ROSTER entry, but it has heavy cost when it contains numerous contacts and perhaps we have a conversation with anybody out of Roster. Is there any way or plugin or another extension to do this?

How can I send a form by email with titanium

I have seen the email dialog example and also the email dialog example, but I am not looking for an email client interface.
I also took a look at the pizza ordering app, and I couldn't find any method for the send button.
I have custom text fields and in the end I want to send the whole form to an email recipient. I can't find the way to do that.
That is, I would appreciate your help.
For sending E-mail from your app , you have these options :-
1- Using Titanium.UI.EmailDialog .
The Email Dialog is created with the Titanium.UI.createEmailDialog method. The user needs to register an e-mail account on the device in order to open the dialog. The dialog will not open when there is not a registered e-mail account.
Ex : Android
Read more http://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.EmailDialog
But As you said you don`t want like this ! and if you want to send direct messages from your app please see these other options :-
2- Make any backend service like #PHP to send email
for ex:- http://www.w3schools.com/php/func_mail_mail.asp, and using Titanium.Network.HTTPClient to connect with your backend service .
3- Using ArrowDB
Enjoy !
Follow these steps,
1) Create webservice method to send email.
2) Call particular email method in the button click.
Note :
Apple will not approve if you don't provide valid reason to send email via webservice. They might think you are trying to spam users.
Create a web service (e.g. a PHP script) that receives POST data and send an email based on it.
In your app, clicking the button simply collects all the data and POST it to your web service.
You can not check this on emulator/simulator only can check on device. And in device you need to configure any email account like gmail or outlook mail.
var emailDialog = Ti.UI.createEmailDialog();
emailDialog.subject = "Hello from Titanium";
emailDialog.toRecipients = ['foo#yahoo.com'];
emailDialog.messageBody = '<b>Appcelerator Titanium Rocks!</b>';
var f = Ti.Filesystem.getFile('cricket.wav');
emailDialog.addAttachment(f);
emailDialog.open();

XMPP offline message push ejabberd

Hi I am developing a chat application using XMPP. Consider the situation in the chat application, When User A send messages to User B and if the User B is offline at that time XMPP will store the sms as offline message and it will send that messages to User B when it comes online. This is working here. But I want to send this offline messages from XMPP as push to User B. I have done lots of searching and I came in a conclusion that we need to send the offline messages from XMPP server to our backend server and from there we need to send that message as push. But how to do this, please help me
It is possible to write a custom module to do that with ejabberd API.
What you need is to use mod_offline_hook (see ejabberd Events and Hooks) to be called when the server wants to store a message in offline store.
You can read mod_offline module for inspiration.

Emails to clients from Jira

I'm looking to send out emails to clients when employees make progress on Jira tickets. Is that possible?
To give an example: A client sends a question through the company website. They then receive an email with their ticket number and can check back to see the status the ticket and/or receive emails to know when progress has been made on that ticket.
If it is possible, how would I go about doing this?
Thanks
If You have mail server connected with Jira enter Notification schemes in main administration. Create new scheme and choose for which event who should be notified. Then enter right project administration and in section Notifications connect created Notification scheme to this project. :)