Liblinphone
3.10.2
|
Exchanging text messages
Messages are sent using LinphoneChatRoom object. First step is to create a chat room from a peer sip uri.
LinphoneChatRoom* chat_room = linphone_core_get_chat_room(lc,"sip:joe@sip.linphone.org");
Once created, messages are sent using function linphone_chat_room_send_message().
linphone_chat_room_send_message(chat_room,"Hello world"); /*sending message*/
Incoming message are received from call back LinphoneCoreVTable.text_received
void text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message) { printf(" Message [%s] received from [%s] \n",message,linphone_address_as_string (from)); }
A complete tutorial can be found at : Chat room tutorial
#define linphone_chat_message_get_from | ( | msg | ) | linphone_chat_message_get_from_address(msg) |
#define linphone_chat_message_get_to | ( | msg | ) | linphone_chat_message_get_to_address(msg) |
#define linphone_chat_message_set_from | ( | msg, | |
addr | |||
) | linphone_chat_message_set_from_address(msg, addr) |
typedef struct _LinphoneChatMessage LinphoneChatMessage |
A chat room message to hold content to be sent.
Can be created by linphone_chat_room_create_message().
typedef struct _LinphoneChatMessageCbs LinphoneChatMessageCbs |
An object to handle the callbacks for the handling a LinphoneChatMessage objects.
typedef void(* LinphoneChatMessageCbsFileTransferProgressIndicationCb)(LinphoneChatMessage *message, const LinphoneContent *content, size_t offset, size_t total) |
File transfer progress indication callback prototype.
message | LinphoneChatMessage message from which the body is received. |
content | LinphoneContent incoming content information |
offset | The number of bytes sent/received since the beginning of the transfer. |
total | The total number of bytes to be sent/received. |
typedef void(* LinphoneChatMessageCbsFileTransferRecvCb)(LinphoneChatMessage *message, const LinphoneContent *content, const LinphoneBuffer *buffer) |
File transfer receive callback prototype. This function is called by the core upon an incoming File transfer is started. This function may be call several time for the same file in case of large file.
message | LinphoneChatMessage message from which the body is received. |
content | LinphoneContent incoming content information |
buffer | LinphoneBuffer holding the received data. Empty buffer means end of file. |
typedef LinphoneBuffer*(* LinphoneChatMessageCbsFileTransferSendCb)(LinphoneChatMessage *message, const LinphoneContent *content, size_t offset, size_t size) |
File transfer send callback prototype. This function is called by the core when an outgoing file transfer is started. This function is called until size is set to 0.
message | LinphoneChatMessage message from which the body is received. |
content | LinphoneContent outgoing content |
offset | the offset in the file from where to get the data to be sent |
size | the number of bytes expected by the framework |
typedef void(* LinphoneChatMessageCbsMsgStateChangedCb)(LinphoneChatMessage *msg, LinphoneChatMessageState state) |
Call back used to notify message delivery status
msg | LinphoneChatMessage object |
status | LinphoneChatMessageState |
typedef enum _LinphoneChatMessageState LinphoneChatMessageState |
LinphoneChatMessageState is used to notify if messages have been succesfully delivered or not.
typedef void(* LinphoneChatMessageStateChangedCb)(LinphoneChatMessage *msg, LinphoneChatMessageState state, void *ud) |
Call back used to notify message delivery status
msg | LinphoneChatMessage object |
status | LinphoneChatMessageState |
ud | application user data |
typedef struct _LinphoneChatRoom LinphoneChatRoom |
A chat room is the place where text messages are exchanged.
Can be created by linphone_core_create_chat_room().
LinphoneChatMessageState is used to notify if messages have been succesfully delivered or not.
enum _LinphoneLimeState |
void linphone_chat_message_add_custom_header | ( | LinphoneChatMessage * | message, |
const char * | header_name, | ||
const char * | header_value | ||
) |
Add custom headers to the message.
message | the message |
header_name | name of the header_name |
header_value | header value |
Cancel an ongoing file transfer attached to this message.(upload or download)
msg | LinphoneChatMessage |
LinphoneChatMessageCbsFileTransferProgressIndicationCb linphone_chat_message_cbs_get_file_transfer_progress_indication | ( | const LinphoneChatMessageCbs * | cbs | ) |
Get the file transfer progress indication callback.
[in] | cbs | LinphoneChatMessageCbs object. |
LinphoneChatMessageCbsFileTransferRecvCb linphone_chat_message_cbs_get_file_transfer_recv | ( | const LinphoneChatMessageCbs * | cbs | ) |
Get the file transfer receive callback.
[in] | cbs | LinphoneChatMessageCbs object. |
LinphoneChatMessageCbsFileTransferSendCb linphone_chat_message_cbs_get_file_transfer_send | ( | const LinphoneChatMessageCbs * | cbs | ) |
Get the file transfer send callback.
[in] | cbs | LinphoneChatMessageCbs object. |
LinphoneChatMessageCbsMsgStateChangedCb linphone_chat_message_cbs_get_msg_state_changed | ( | const LinphoneChatMessageCbs * | cbs | ) |
Get the message state changed callback.
[in] | cbs | LinphoneChatMessageCbs object. |
void* linphone_chat_message_cbs_get_user_data | ( | const LinphoneChatMessageCbs * | cbs | ) |
Retrieve the user pointer associated with the LinphoneChatMessageCbs object.
[in] | cbs | LinphoneChatMessageCbs object. |
Acquire a reference to the LinphoneChatMessageCbs object.
[in] | cbs | LinphoneChatMessageCbs object. |
void linphone_chat_message_cbs_set_file_transfer_progress_indication | ( | LinphoneChatMessageCbs * | cbs, |
LinphoneChatMessageCbsFileTransferProgressIndicationCb | cb | ||
) |
Set the file transfer progress indication callback.
[in] | cbs | LinphoneChatMessageCbs object. |
[in] | cb | The file transfer progress indication callback to be used. |
void linphone_chat_message_cbs_set_file_transfer_recv | ( | LinphoneChatMessageCbs * | cbs, |
LinphoneChatMessageCbsFileTransferRecvCb | cb | ||
) |
Set the file transfer receive callback.
[in] | cbs | LinphoneChatMessageCbs object. |
[in] | cb | The file transfer receive callback to be used. |
void linphone_chat_message_cbs_set_file_transfer_send | ( | LinphoneChatMessageCbs * | cbs, |
LinphoneChatMessageCbsFileTransferSendCb | cb | ||
) |
Set the file transfer send callback.
[in] | cbs | LinphoneChatMessageCbs object. |
[in] | cb | The file transfer send callback to be used. |
void linphone_chat_message_cbs_set_msg_state_changed | ( | LinphoneChatMessageCbs * | cbs, |
LinphoneChatMessageCbsMsgStateChangedCb | cb | ||
) |
Set the message state changed callback.
[in] | cbs | LinphoneChatMessageCbs object. |
[in] | cb | The message state changed callback to be used. |
void linphone_chat_message_cbs_set_user_data | ( | LinphoneChatMessageCbs * | cbs, |
void * | ud | ||
) |
Assign a user pointer to the LinphoneChatMessageCbs object.
[in] | cbs | LinphoneChatMessageCbs object. |
[in] | ud | The user pointer to associate with the LinphoneChatMessageCbs object. |
void linphone_chat_message_cbs_unref | ( | LinphoneChatMessageCbs * | cbs | ) |
Release reference to the LinphoneChatMessageCbs object.
[in] | cbs | LinphoneChatMessageCbs object. |
LinphoneChatMessage* linphone_chat_message_clone | ( | const LinphoneChatMessage * | message | ) |
Duplicate a LinphoneChatMessage
void linphone_chat_message_destroy | ( | LinphoneChatMessage * | msg | ) |
Destroys a LinphoneChatMessage.
int linphone_chat_message_download_file | ( | LinphoneChatMessage * | message | ) |
Start the download of the file referenced in a LinphoneChatMessage from remote server.
[in] | message | LinphoneChatMessage object. |
const char* linphone_chat_message_get_appdata | ( | const LinphoneChatMessage * | message | ) |
Linphone message has an app-specific field that can store a text. The application might want to use it for keeping data over restarts, like thumbnail image path.
message | LinphoneChatMessage |
Get the LinphoneChatMessageCbs object associated with the LinphoneChatMessage.
[in] | msg | LinphoneChatMessage object |
Returns the chatroom this message belongs to.
const char* linphone_chat_message_get_custom_header | ( | LinphoneChatMessage * | message, |
const char * | header_name | ||
) |
Retrieve a custom header value given its name.
message | the message |
header_name | header name searched |
const LinphoneErrorInfo* linphone_chat_message_get_error_info | ( | const LinphoneChatMessage * | msg | ) |
Get full details about delivery error of a chat message.
msg | a LinphoneChatMessage |
const char* linphone_chat_message_get_external_body_url | ( | const LinphoneChatMessage * | message | ) |
Linphone message can carry external body as defined by rfc2017
message | LinphoneChatMessage |
const char* linphone_chat_message_get_file_transfer_filepath | ( | LinphoneChatMessage * | msg | ) |
Get the path to the file to read from or write to during the file transfer.
[in] | msg | LinphoneChatMessage object |
const LinphoneContent* linphone_chat_message_get_file_transfer_information | ( | const LinphoneChatMessage * | message | ) |
Get the file_transfer_information (used by call backs to recover informations during a rcs file transfer)
message | LinphoneChatMessage |
const LinphoneAddress* linphone_chat_message_get_from_address | ( | const LinphoneChatMessage * | message | ) |
LinphoneAddress* linphone_chat_message_get_local_address | ( | const LinphoneChatMessage * | message | ) |
Returns the origin address of a message if it was a outgoing message, or the destination address if it was an incoming message.
message | LinphoneChatMessage obj |
LinphoneChatMessageState linphone_chat_message_get_state | ( | const LinphoneChatMessage * | message | ) |
Get the state of the message
message | LinphoneChatMessage obj |
unsigned int linphone_chat_message_get_storage_id | ( | LinphoneChatMessage * | message | ) |
Returns the id used to identify this message in the storage database
message | the message |
const char* linphone_chat_message_get_text | ( | const LinphoneChatMessage * | message | ) |
Get text part of this message
time_t linphone_chat_message_get_time | ( | const LinphoneChatMessage * | message | ) |
Get the time the message was sent.
const LinphoneAddress* linphone_chat_message_get_to_address | ( | const LinphoneChatMessage * | message | ) |
Get destination of the message
[in] | message | LinphoneChatMessage obj |
void* linphone_chat_message_get_user_data | ( | const LinphoneChatMessage * | message | ) |
User pointer get function
bool_t linphone_chat_message_is_outgoing | ( | LinphoneChatMessage * | message | ) |
Returns TRUE if the message has been sent, returns FALSE if the message has been received.
message | the message |
bool_t linphone_chat_message_is_read | ( | LinphoneChatMessage * | message | ) |
Returns TRUE if the message has been read, otherwise returns FALSE.
message | the message |
int linphone_chat_message_put_char | ( | LinphoneChatMessage * | msg, |
uint32_t | character | ||
) |
Fulfill a chat message char by char. Message linked to a Real Time Text Call send char in realtime following RFC 4103/T.140 To commit a message, use linphone_chat_room_send_message
[in] | msg | LinphoneChatMessage |
[in] | character | T.140 char |
Acquire a reference to the chat message.
msg | the chat message |
void linphone_chat_message_set_appdata | ( | LinphoneChatMessage * | message, |
const char * | data | ||
) |
Linphone message has an app-specific field that can store a text. The application might want to use it for keeping data over restarts, like thumbnail image path.
Invoking this function will attempt to update the message storage to reflect the changeif it is enabled.
message | LinphoneChatMessage |
data | the data to store into the message |
void linphone_chat_message_set_external_body_url | ( | LinphoneChatMessage * | message, |
const char * | url | ||
) |
Linphone message can carry external body as defined by rfc2017
message | a LinphoneChatMessage |
url | ex: access-type=URL; URL="http://www.foo.com/file" |
void linphone_chat_message_set_file_transfer_filepath | ( | LinphoneChatMessage * | msg, |
const char * | filepath | ||
) |
Set the path to the file to read from or write to during the file transfer.
[in] | msg | LinphoneChatMessage object |
[in] | filepath | The path to the file to use for the file transfer. |
void linphone_chat_message_set_from_address | ( | LinphoneChatMessage * | message, |
const LinphoneAddress * | from | ||
) |
Set origin of the message
[in] | message | LinphoneChatMessage obj |
[in] | from | LinphoneAddress origin of this message (copied) |
void linphone_chat_message_set_to_address | ( | LinphoneChatMessage * | message, |
const LinphoneAddress * | addr | ||
) |
Set destination of the message
[in] | message | LinphoneChatMessage obj |
[in] | addr | LinphoneAddress destination of this message (copied) |
void linphone_chat_message_set_user_data | ( | LinphoneChatMessage * | message, |
void * | |||
) |
User pointer set function
MS2_DEPRECATED void linphone_chat_message_start_file_download | ( | LinphoneChatMessage * | message, |
LinphoneChatMessageStateChangedCb | status_cb, | ||
void * | ud | ||
) |
Start the download of the file from remote server
message | LinphoneChatMessage |
status_cb | LinphoneChatMessageStateChangeCb status callback invoked when file is downloaded or could not be downloaded |
ud | user data |
const char* linphone_chat_message_state_to_string | ( | const LinphoneChatMessageState | state | ) |
Returns a LinphoneChatMessageState as a string.
void linphone_chat_message_unref | ( | LinphoneChatMessage * | msg | ) |
Release reference to the chat message.
msg | the chat message. |
void linphone_chat_room_compose | ( | LinphoneChatRoom * | cr | ) |
Notifies the destination of the chat message being composed that the user is typing a new message.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation for which a new message is being typed. |
LinphoneChatMessage* linphone_chat_room_create_file_transfer_message | ( | LinphoneChatRoom * | cr, |
const LinphoneContent * | initial_content | ||
) |
Create a message attached to a dedicated chat room with a particular content. Use linphone_chat_room_send_message to initiate the transfer
cr | the chat room. |
initial_content | LinphoneContent initial content. LinphoneCoreVTable.file_transfer_send is invoked later to notify file transfer progress and collect next chunk of the message if #LinphoneContent.data is NULL. |
LinphoneChatMessage* linphone_chat_room_create_message | ( | LinphoneChatRoom * | cr, |
const char * | message | ||
) |
Create a message attached to a dedicated chat room;
cr | the chat room. |
message | text message, NULL if absent. |
LinphoneChatMessage* linphone_chat_room_create_message_2 | ( | LinphoneChatRoom * | cr, |
const char * | message, | ||
const char * | external_body_url, | ||
LinphoneChatMessageState | state, | ||
time_t | time, | ||
bool_t | is_read, | ||
bool_t | is_incoming | ||
) |
Create a message attached to a dedicated chat room;
cr | the chat room. |
message | text message, NULL if absent. |
external_body_url | the URL given in external body or NULL. |
state | the LinphoneChatMessage.State of the message. |
time | the time_t at which the message has been received/sent. |
is_read | TRUE if the message should be flagged as read, FALSE otherwise. |
is_incoming | TRUE if the message has been received, FALSE otherwise. |
void linphone_chat_room_delete_history | ( | LinphoneChatRoom * | cr | ) |
Delete all messages from the history
[in] | cr | The LinphoneChatRoom object corresponding to the conversation. |
void linphone_chat_room_delete_message | ( | LinphoneChatRoom * | cr, |
LinphoneChatMessage * | msg | ||
) |
Delete a message from the chat room history.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation. |
[in] | msg | The LinphoneChatMessage object to remove. |
MS2_DEPRECATED void linphone_chat_room_destroy | ( | LinphoneChatRoom * | cr | ) |
Destroy a LinphoneChatRoom.
cr | LinphoneChatRoom object |
LinphoneCall* linphone_chat_room_get_call | ( | const LinphoneChatRoom * | room | ) |
get Curent Call associated to this chatroom if any To commit a message, use linphone_chat_room_send_message
[in] | room | LinphoneChatRomm |
uint32_t linphone_chat_room_get_char | ( | const LinphoneChatRoom * | cr | ) |
When realtime text is enabled linphone_call_params_realtime_text_enabled, LinphoneCoreIsComposingReceivedCb is call everytime a char is received from peer. At the end of remote typing a regular LinphoneChatMessage is received with committed data from LinphoneCoreMessageReceivedCb.
[in] | cr | LinphoneChatRoom object |
Returns back pointer to LinphoneCore object.
bctbx_list_t* linphone_chat_room_get_history | ( | LinphoneChatRoom * | cr, |
int | nb_message | ||
) |
Gets nb_message most recent messages from cr chat room, sorted from oldest to most recent.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation for which messages should be retrieved |
[in] | nb_message | Number of message to retrieve. 0 means everything. |
bctbx_list_t* linphone_chat_room_get_history_range | ( | LinphoneChatRoom * | cr, |
int | begin, | ||
int | end | ||
) |
Gets the partial list of messages in the given range, sorted from oldest to most recent.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation for which messages should be retrieved |
[in] | begin | The first message of the range to be retrieved. History most recent message has index 0. |
[in] | end | The last message of the range to be retrieved. History oldest message has index of history size - 1 (use linphone_chat_room_get_history_size to retrieve history size) |
int linphone_chat_room_get_history_size | ( | LinphoneChatRoom * | cr | ) |
Gets the number of messages in a chat room.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation for which size has to be computed |
MS2_DEPRECATED LinphoneCore* linphone_chat_room_get_lc | ( | LinphoneChatRoom * | cr | ) |
Returns back pointer to LinphoneCore object.
const LinphoneAddress* linphone_chat_room_get_peer_address | ( | LinphoneChatRoom * | cr | ) |
get peer address associated to this LinphoneChatRoom
cr | LinphoneChatRoom object |
Gets the number of unread messages in the chatroom.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation. |
void* linphone_chat_room_get_user_data | ( | const LinphoneChatRoom * | cr | ) |
Retrieve the user pointer associated with the chat room.
[in] | cr | The chat room. |
bool_t linphone_chat_room_is_remote_composing | ( | const LinphoneChatRoom * | cr | ) |
Tells whether the remote is currently composing a message.
[in] | cr | The LinphoneChatRoom object corresponding to the conversation. |
bool_t linphone_chat_room_lime_available | ( | LinphoneChatRoom * | cr | ) |
Returns true if lime is available for given peer
void linphone_chat_room_mark_as_read | ( | LinphoneChatRoom * | cr | ) |
Mark all messages of the conversation as read
[in] | cr | The LinphoneChatRoom object corresponding to the conversation. |
Acquire a reference to the chat room.
[in] | cr | The chat room. |
void linphone_chat_room_send_chat_message | ( | LinphoneChatRoom * | cr, |
LinphoneChatMessage * | msg | ||
) |
Send a message to peer member of this chat room.
[in] | cr | LinphoneChatRoom object |
[in] | msg | LinphoneChatMessage object The state of the message sending will be notified via the callbacks defined in the LinphoneChatMessageCbs object that can be obtained by calling linphone_chat_message_get_callbacks(). The LinphoneChatMessage reference is transfered to the function and thus doesn't need to be unref'd by the application. |
MS2_DEPRECATED void linphone_chat_room_send_message | ( | LinphoneChatRoom * | cr, |
const char * | msg | ||
) |
Send a message to peer member of this chat room.
cr | LinphoneChatRoom object |
msg | message to be sent |
MS2_DEPRECATED void linphone_chat_room_send_message2 | ( | LinphoneChatRoom * | cr, |
LinphoneChatMessage * | msg, | ||
LinphoneChatMessageStateChangedCb | status_cb, | ||
void * | ud | ||
) |
Send a message to peer member of this chat room.
cr | LinphoneChatRoom object |
msg | LinphoneChatMessage message to be sent |
status_cb | LinphoneChatMessageStateChangeCb status callback invoked when message is delivered or could not be delivered. May be NULL |
ud | user data for the status cb. |
void linphone_chat_room_set_user_data | ( | LinphoneChatRoom * | cr, |
void * | ud | ||
) |
Assign a user pointer to the chat room.
[in] | cr | The chat room. |
[in] | ud | The user pointer to associate with the chat room. |
void linphone_chat_room_unref | ( | LinphoneChatRoom * | cr | ) |
Release reference to the chat room.
[in] | cr | The chat room. |
bool_t linphone_core_chat_enabled | ( | const LinphoneCore * | lc | ) |
Returns whether chat is enabled.
lc | A LinphoneCore object |
void linphone_core_delete_chat_room | ( | LinphoneCore * | lc, |
LinphoneChatRoom * | cr | ||
) |
Removes a chatroom including all message history from the LinphoneCore.
lc | A LinphoneCore object |
cr | A LinphoneChatRoom object |
void linphone_core_disable_chat | ( | LinphoneCore * | lc, |
LinphoneReason | deny_reason | ||
) |
Inconditionnaly disable incoming chat messages.
lc | A LinphoneCore object |
deny_reason | the deny reason (#LinphoneReasonNone has no effect). |
void linphone_core_enable_chat | ( | LinphoneCore * | lc | ) |
Enable reception of incoming chat messages. By default it is enabled but it can be disabled with linphone_core_disable_chat().
lc | A LinphoneCore object |
const char* linphone_core_get_chat_database_path | ( | const LinphoneCore * | lc | ) |
Get path to the database file used for storing chat messages.
lc | the linphone core |
LinphoneChatRoom* linphone_core_get_chat_room | ( | LinphoneCore * | lc, |
const LinphoneAddress * | addr | ||
) |
Get a chat room whose peer is the supplied address. If it does not exist yet, it will be created. No reference is transfered to the application. The LinphoneCore keeps a reference on the chat room.
lc | the linphone core |
addr | a linphone address. |
LinphoneChatRoom* linphone_core_get_chat_room_from_uri | ( | LinphoneCore * | lc, |
const char * | to | ||
) |
Get a chat room for messaging from a sip uri like sip:joe@sip.linphone.org. If it does not exist yet, it will be created. No reference is transfered to the application. The LinphoneCore keeps a reference on the chat room.
lc | A LinphoneCore object |
to | The destination address for messages. |
const bctbx_list_t* linphone_core_get_chat_rooms | ( | LinphoneCore * | lc | ) |
Returns an list of chat rooms
[in] | lc | LinphoneCore object |
void linphone_core_set_chat_database_path | ( | LinphoneCore * | lc, |
const char * | path | ||
) |
Sets the database filename where chat messages will be stored. If the file does not exist, it will be created.
lc | the linphone core |
path | filesystem path |