sipml5实现SIP MESSAGE方法(一)
来源:互联网 发布:java仪表盘代码 编辑:程序博客网 时间:2024/05/16 02:21
在做个基于SIP企业会议通信终端,在web端要实现即时通信(IM)功能,需要用到SIP MESSAGE方法,这个方法在RFC3428中扩展。
sipml5中已经有了SIP MESSAGE实现的API,http://sipml5.org/docgen/#sendMessage,然而在sipml5的DEMO中,没有对其进行实现。根据官方指南,在sipml5 demo(https://code.google.com/p/sipml5/)的基础文件call.htm上开始实现。
首先需要添加一个按钮,用于发送MESSAE,先做简单点,就接在HangUp后头吧,并添加一个MESSAGE显示区域。
<!-- 添加发送MESSAE按钮 --><div class="btn-group"> <input type="button" id="btnSendMessage" style="margin: 0; vertical-align:middle; height: 100%;" class="btn btn-primary" value="Send Message" onclick='sipSendMessage();' disabled /></div><!-- ---------------------- --><!-- 添加MESSAGE显示区域 --><label style="width: 100%;" align="center" id="txtMessage" ></label><!----------------------------->然后在javascript中实现sipSendMessage方法,需要先定义一个变量oSipSessionSendMessage用于创建这个MESSAGE Session,然后发送文本消息。
//send message (SIP MESSAGE)function sipSendMessage() { if(oSipStack && !oSipSessionSendMessage && !tsk_string_is_null_or_empty(txtPhoneNumber.value)) {oSipSessionSendMessage=oSipStack.newSession('message',oConfigSendMessage);//send messageif(oSipSessionSendMessage.send(txtPhoneNumber.value,'你好,世界!','text/plain;charset=utf-8')==0){txtMessage.innerHTML = txtMessage.innerHTML+txtDisplayName.value+'<i>:你好,世界!</i><br>';}}}消息发送过去后,还要监听对端的响应,在onSipEventSession这个回调函数中,event type为'i_ao_request'时,判断oSipSessionSendMessage的响应,202 Accepted时表示网关接收了,200 OK则表示目的地已经接收了。
//SEND SIP MESSAGE, The Responseif(e.session==oSipSessionSendMessage){ var iSipResonseCode=e.getSipResponseCode(); if(iSipResonseCode==202){ txtMessage.innerHTML = txtMessage.innerHTML+'<i>Gateway Accepted!</i><br>'; } if(iSipResonseCode==200){ txtMessage.innerHTML = txtMessage.innerHTML+'<i>Destination Accepted!</i><br>'; }}
接下来实现接收消息,在SIP Stack的回调函数onSipEventStack中,实现消息的监听和实现,接收新消息的type是'i_new_message',添加这个case。
//Receive messagecase 'i_new_message':{ oSipSessionSendMessage=e.newSession; oSipSessionSendMessage.setConfiguration(oConfigSendMessage); var sRemoteNumber = (oSipSessionSendMessage.getRemoteFriendlyName() || 'unknown'); oSipSessionSendMessage.accept(); txtMessage.innerHTML = txtMessage.innerHTML+'<i>'+sRemoteNumber+':'+e.getContentString()+'</i><br>'; break;}oConfigSendMessage是SIP MESSAGE Session的Config结构体,这边就只配置了events_listener。
oConfigSendMessage={ events_listener: { events: '*', listener: onSipEventSession }};至此,就实现了SIP MESSAGE的接收发送以及简单的显示,后面将对显示模块进行设计,以及发送框的添加。
下面是测试截图。
0 0
- sipml5实现SIP MESSAGE方法(一)
- 网页SIP电话客户端:sipml5
- SIP——MESSAGE方法
- [SIP]Message
- SIP对Instant Message的支持——MESSAGE方法
- SIP Message——SIP学习笔记(四)
- SIP代理服务器(一)
- 关于MESSAGE/SIP
- SIP MESSAGE Delivered
- sip RFC3261中文版 (一)
- sip 学习一 (概述)
- sip消息概念(一)
- sip消息概念(一)
- SIP 之 imsdroid(一)
- Asterisk11 webrtc 安装及demo测试(SIPML5)
- SIP 183 Session Progress Message
- SIP入门(一):建立SIP软电话环境
- SIP入门(一):建立SIP软电话环境
- 多线程三(交互)
- Linux定时任务Crontab详解
- 传感器检测技术中的屏蔽问题
- 谈谈snprintf
- eclipse xml文件里 出现android1
- sipml5实现SIP MESSAGE方法(一)
- xUtils框架的介绍
- 给大家推荐个东西,苹果299刀的企业账号发布,用这个直接变成免费
- shell编程比较总结
- linux C Get/Set IP Address
- <script></script>和<script language=javascript></script>的区别
- IOS 可以实现滑动的第三方库iCarousel的简单使用
- 工作日志2014-08-04
- uva 1323 - Vivian's Problem(梅森素数)