Index: apps/app_sendtext.c =================================================================== RCS file: /usr/cvsroot/asterisk/apps/app_sendtext.c,v retrieving revision 1.7 diff -u -r1.7 app_sendtext.c --- apps/app_sendtext.c 6 Jun 2005 22:39:31 -0000 1.7 +++ apps/app_sendtext.c 26 Jul 2005 19:12:48 -0000 @@ -34,12 +34,20 @@ static char *synopsis = "Send a Text Message"; static char *descrip = -" SendText(text): Sends text to client. If the client\n" -"does not support text transport, and there exists a step with\n" -"priority n + 101, then execution will continue at that step.\n" -"Otherwise, execution will continue at the next priority level.\n" -"SendText only returns 0 if the text was sent correctly or if\n" -"the channel does not support text transport, and -1 otherwise.\n"; +" SendText(text): Sends text to current channel (callee).\n" +"Otherwise, execution will continue at the next priority level.\n" +"Result of transmission will be stored in the SENDTEXTSTATUS\n" +"channel variable:\n" +" SUCCESS Transmission succeeded\n" +" FAILURE Transmission failed\n" +" UNSUPPORTED Text transmission not supported by channel\n" +"\n" +"At this moment, text is supposed to be 7 bit ASCII in most channels.\n" +"Old depreciated behaviour: \n" +" SendText only returns 0 if the text was sent correctly or if\n" +" the channel does not support text transport.\n" +" If the client does not support text transport, and there exists a\n" +" step with priority n + 101, then execution will continue at that step.\n"; STANDARD_LOCAL_USER; @@ -49,10 +57,13 @@ { int res = 0; struct localuser *u; + char *status = "UNSUPPORTED"; + if (!data || !strlen((char *)data)) { ast_log(LOG_WARNING, "SendText requires an argument (text)\n"); return -1; } + LOCAL_USER_ADD(u); ast_mutex_lock(&chan->lock); if (!chan->tech->send_text) { @@ -63,10 +74,14 @@ LOCAL_USER_REMOVE(u); return 0; } + status = "FAILURE"; ast_mutex_unlock(&chan->lock); res = ast_sendtext(chan, (char *)data); + if (!res) + status = "SUCCESS"; + pbx_builtin_setvar_helper(chan, "SENDTEXTSTATUS", status); LOCAL_USER_REMOVE(u); - return res; + return 0; } int unload_module(void)