Skip to contentSkip to conversation

SMS handling

Usage Dario 2 participants 4 messages Mar 19, 2010

lore
Share & tools
lore

Dario

author
#0 lore raw

Hi all,
I have a question: what is the best practice (or the suggested behaviour) to handle SMSes in an application using oFono?
I am thinking about two common cases:
1) handling outgoing message status: I use the SendMessage DBus API but AFAIK I'm not aware of the status of the sending operation (pending, blocked, sent...) in the DBus response;
2) handling incoming messages when application is (re)starting/crashed:
is there a way to retrieve a message if it comes in during a phase where the application is not running or it can't receive the IncomingMessage signal? Does oFono logs or stores the messages somewhere?

I think I found something in the "Example Call History" plugin, does this mean I need to create an oFono plugin to manage my application needs or am I missing some info/API somewhere?

Thank you in advance, best regards,
Dario.

#1 lore raw

Hi Dario,

Quoted 7 lines

Hi all,
I have a question: what is the best practice (or the suggested behaviour) to handle SMSes in an application using oFono?
I am thinking about two common cases:
1) handling outgoing message status: I use the SendMessage DBus API but AFAIK I'm not aware of the status of the sending operation (pending, blocked, sent...) in the DBus response;

The current semantics are that the DBusMessage returns only when the SMS has been successfully sent to the network, or oFono determined that it cannot send it. So you can assume that SMS is pending as soon as dbus_message_send is performed by your client. And that SMS has been sent/failed as soon as the message call returns.

The history plugin is given a bit more information. It is notified when the SMS is queued, successfully sent / not.

Quoted 4 lines

2) handling incoming messages when application is (re)starting/crashed:
is there a way to retrieve a message if it comes in during a phase where the application is not running or it can't receive the IncomingMessage signal? Does oFono logs or stores the messages somewhere?

This is what the history plugin is for. History is notified when an SMS comes in and can persist this information however it wishes. The plugin can even define its own D-Bus interface for notifying external clients if needed.

Quoted 4 lines

I think I found something in the "Example Call History" plugin, does this mean I need to create an oFono plugin to manage my application needs or am I missing some info/API somewhere?

You don't have to use history plugin, but it can make certain tasks really easy.

Quoted 3 lines

Thank you in advance, best regards,
Dario.

Regards,
-Denis

author
#2 lore raw

Hi Denis,

Quoted 6 lines

The current semantics are that the DBusMessage returns only when the SMS has been successfully sent to the network, or oFono determined that it cannot send it. So you can assume that SMS is pending as soon as dbus_message_send is performed by your client. And that SMS has been sent/failed as soon as the message call returns.

This means I will have to use a synchronous call and wait for the response? I suppose an error response will mean a send failure, is it correct?

Quoted 11 lines
Quoted 6 lines

2) handling incoming messages when application is (re)starting/crashed:
is there a way to retrieve a message if it comes in during a phase where the application is not running or it can't receive the IncomingMessage signal? Does oFono logs or stores the messages somewhere?

This is what the history plugin is for. History is notified when an SMS comes in and can persist this information however it wishes. The plugin can even define its own D-Bus interface for notifying external clients if needed.

OK, as per our IRC conversation I'm interested in writing an SQLite history plug-in to store calls and SMSes infos, so I'll try to design a simple DB and post it here in a few days.
Would it be a problem to have libsqlite as dependency of oFono? Is there a way to let it out of the project or however do you consider it a useful dependency for other (future) purposes?
Thank you very much in advance, best regards,
Dario.

#3 lore raw

Hi Dario,

Quoted 8 lines

Hi Denis,

Quoted 5 lines

The current semantics are that the DBusMessage returns only when the SMS has been successfully sent to the network, or oFono determined that it cannot send it. So you can assume that SMS is pending as soon as dbus_message_send is performed by your client. And that SMS has been sent/failed as soon as the message call returns.

Quoted 4 lines

This means I will have to use a synchronous call and wait for the response? I suppose an error response will mean a send failure, is it correct?

Ideally nobody should ever use synchronous calls unless the DBus bindings are broken. In low-level D-Bus you would use a pending call here.

Quoted 10 lines
Quoted 9 lines
Quoted 4 lines

2) handling incoming messages when application is (re)starting/crashed:
is there a way to retrieve a message if it comes in during a phase where the application is not running or it can't receive the IncomingMessage signal? Does oFono logs or stores the messages somewhere?

This is what the history plugin is for. History is notified when an SMS comes in and can persist this information however it wishes. The plugin can even define its own D-Bus interface for notifying external clients if needed.

Quoted 6 lines

OK, as per our IRC conversation I'm interested in writing an SQLite history plug-in to store calls and SMSes infos, so I'll try to design a simple DB and post it here in a few days.
Would it be a problem to have libsqlite as dependency of oFono? Is there a way to let it out of the project or however do you consider it a useful dependency for other (future) purposes?

As long as it is a plugin and automake magic properly written (e.g. allows -- disable / autodetection) it shouldn't be a problem. But let us cross that bridge when we get to it.

Quoted 2 lines

Thank you very much in advance, best regards,
Dario.

Regards,
-Denis