mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-01 19:43:03 +00:00
Merged revisions 333681 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/10 ........ r333681 | twilson | 2011-08-29 12:28:59 -0500 (Mon, 29 Aug 2011) | 7 lines Use realtime text when it is negotiated This patch make use of wirte_text() realtime text instead of send_text() if T.140 is in native formats. ASTERISK-17937 Review: https://reviewboard.asterisk.org/r/1356/ ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@333689 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
4
CHANGES
4
CHANGES
@@ -40,6 +40,10 @@ Text Messaging
|
||||
The MESSAGE() dialplan function and MessageSend() application have been
|
||||
added to go along with this functionality. More detailed usage information
|
||||
can be found on the Asterisk wiki (http://wiki.asterisk.org/).
|
||||
* If real-time text support (T.140) is negotiated, it will be preferred for
|
||||
sending text via the SendText application. For example, via SIP, messages
|
||||
that were once sent via the SIP MESSAGE request would be sent via RTP if
|
||||
T.140 text is negotiated for a call.
|
||||
|
||||
Parking
|
||||
-------
|
||||
|
||||
@@ -4586,9 +4586,29 @@ int ast_sendtext(struct ast_channel *chan, const char *text)
|
||||
ast_channel_unlock(chan);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ast_strlen_zero(text)) {
|
||||
ast_channel_unlock(chan);
|
||||
return 0;
|
||||
}
|
||||
|
||||
CHECK_BLOCKING(chan);
|
||||
if (chan->tech->send_text)
|
||||
if (chan->tech->write_text && (ast_format_cap_has_type(chan->nativeformats, AST_FORMAT_TYPE_TEXT))) {
|
||||
struct ast_frame f;
|
||||
|
||||
f.frametype = AST_FRAME_TEXT;
|
||||
f.src = "DIALPLAN";
|
||||
f.mallocd = AST_MALLOCD_DATA;
|
||||
f.datalen = strlen(text);
|
||||
f.data.ptr = ast_strdup(text);
|
||||
f.offset = 0;
|
||||
f.seqno = 0;
|
||||
|
||||
ast_format_set(&f.subclass.format, AST_FORMAT_T140, 0);
|
||||
res = chan->tech->write_text(chan, &f);
|
||||
} else if (chan->tech->send_text) {
|
||||
res = chan->tech->send_text(chan, text);
|
||||
}
|
||||
ast_clear_flag(chan, AST_FLAG_BLOCKING);
|
||||
ast_channel_unlock(chan);
|
||||
return res;
|
||||
|
||||
Reference in New Issue
Block a user