Cualquiera conoce buenos ejemplos sobre cómo configurar un cliente pjsip para recibir mensajes. puedo enviar mensajes desde el cliente mediante:pjsip recibir sms
pjsua_im_send(sip_acc_id, &to, NULL, &msgbody, NULL, NULL);
a cualquier número.
Pero no tengo idea de qué hacer para recibir mensajes en la cuenta de sip ya registrada.
Cualquier información sería muy apreciada.
Nota: Solo puedo usar pjsip y ninguna otra biblioteca.
Editar: algunas cosas nuevas que he encontrado:
http://trac.pjsip.org/repos/ticket/1070
http://www.pjsip.org/release/0.5.4/PJSIP-Dev-Guide.pdf (sin embargo todo este documento dice acerca de Mensajes entrantes es la siguiente:
16.1.2 recepción de mensajes
Las solicitudes de MENSAJE entrantes fuera de los cuadros de diálogo se recibirán mediante la aplicación módulo. Las solicitudes de MENSAJE entrantes dentro de un diálogo se notificarán al uso del diálogo a través del on_tsx_state() devolución de llamada del cuadro de diálogo.
que aún no aclara mucho sobre cómo manejar los mensajes entrantes.
http://www.ietf.org/rfc/rfc3261.txt
http://trac.pjsip.org/repos/wiki/SIP_Message_Buffer_Event
Edit2: me han dicho que on_pager función tiene que ser utilizado para esta funcionalidad. Así que lo intenté, pero todavía no tuve éxito, por desgracia.
Esto es lo que hice:
/* Initialize application callbacks */
app_config->cfg.cb.on_call_state = &on_call_state;
app_config->cfg.cb.on_call_media_state = &on_call_media_state;
app_config->cfg.cb.on_incoming_call = &on_incoming_call;
app_config->cfg.cb.on_reg_state = &on_reg_state;
app_config->cfg.cb.on_pager = &on_pager;
Y la aplicación on_pager:
static void on_pager(pjsua_call_id call_id, const pj_str_t *from, const pj_str_t *to, const pj_str_t *contact, const pj_str_t *mime_type, const pj_str_t *body) {
NSLog(@"**************** on_pager called **********************");
AppDelegate *app = (AppDelegate *)[AppDelegate sharedApplication];
pjsua_call_info ci;
pjsua_call_get_info(call_id, &ci);
PJ_UNUSED_ARG(call_id);
PJ_UNUSED_ARG(to);
PJ_UNUSED_ARG(contact);
PJ_UNUSED_ARG(mime_type);
[app ring];
//PJ_LOG(3,(THIS_FILE, "MESSAGE from %.*s: %.*s (%.*s)", (int)from->slen, from->ptr, (int)text->slen, text->ptr, (int)mime_type->slen, mime_type->ptr));
postMessageStateNotification(call_id, &ci);
}
yo esperaba que la aplicación llame on_pager cuando se recibe un mensaje, pero no lo hizo. on_incoming_call
sin embargo, recibe una llamada.