+/**
+ *LinphoneChatMessageStatus used to notify if message has been succesfully delivered or not
+ */
+typedef enum _LinphoneChatMessageStates {
+ LinphoneChatMessageStateIdle, /** initial state*/
+ LinphoneChatMessageStateInProgress, /*delivery in progress**/
+ LinphoneChatMessageStateDelivered, /** message succesffully delivered an acknoleged by remote end point*/
+ LinphoneChatMessageStateNotDelivered /** message was not delivered*/
+}LinphoneChatMessageState;
+
+/**
+ * to string function
+ */
+const char* linphone_chat_message_state_to_string(const LinphoneChatMessageState state);
+/**
+ * user pointer set function
+ */
+void linphone_chat_message_set_user_data(LinphoneChatMessage* message,void*);
+/**
+ * user pointer get function
+ */
+void* linphone_chat_message_get_user_data(const LinphoneChatMessage* message);
+
+/**
+ * Call back used to notify message delivery status
+ *@param msg #LinphoneChatMessage object
+ *@param status #LinphoneChatMessageStatus
+ *@param ud us user data
+ */
+typedef void (*LinphoneChatMessageStateChangeCb)(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud);
+/**
+ * send a message to peer member of this chat room.
+ * @param cr #LinphoneChatRoom object
+ * @param msg #LinphoneChatMessage message to be sent
+ * @param status_cb #LinphoneChatMessageStatus status call back invoked when to message is delivered or not. May be NULL
+ * @param ud user data for the status cb.
+ */
+void linphone_chat_room_send_message2(LinphoneChatRoom *cr, LinphoneChatMessage* msg,LinphoneChatMessageStateChangeCb status_cb,void* ud);