本文档由我们(Doubango Telecom)编写,旨在帮助开发人员快速为桌面和移动平台创建创新的多媒体应用程序。如果你是一个开发人员,并且正在寻找为这些平台开发一个无插件的NGN(VoIP、消息、视频会议等)应用程序的最佳方法,那么,你就在正确的地方了。
如果你想得到帮助或有一些反馈,那么请访问开发者的网站或订阅我们的开发者邮件列表。
我们强烈建议检查其他SIPML5组件:webrtc2sip、点击呼叫、webrtc4all和SIP TelePresence(视频组聊天)客户端。

这里提供完整的API

用API编程
类图
下载API
初始化发动机
注册/登录
拨打/接听音频/视频通话
共享屏幕/桌面
发送/接收SIP消息(类似SMS)
发布状态
订阅状态更改
技术帮助

用API编程
本节简要介绍了主要功能,可能缺少详细信息。有关每个功能的详细信息,请单击它。
一个功能齐全的演示在http://sipml5.org/call.htm。
下面是一个非常简洁的代码,演示如何初始化引擎、启动堆栈并在不到15行的时间内从bob向alice进行视频调用:

        SIPml.init(function(e){var stack =  new SIPml.Stack({realm: 'example.org', impi: 'bob', impu: 'sip:bob@example.org', password: 'mysecret',events_listener: { events: 'started', listener: function(e){var callSession = stack.newSession('call-audiovideo', {video_local: document.getElementById('video-local'),video_remote: document.getElementById('video-remote'),audio_remote: document.getElementById('audio-remote')});callSession.call('alice');} }});stack.start();});

类图
下图是主要类和函数的概述:

下载API
API是一个可以在这里下载的javascript文件。这个文件是按照这里的说明生成的。
初始化引擎
这是为了初始化媒体和信令引擎而调用的第一个函数。
var readyCallback = function(e){
createSipStack(); // see next section
};
var errorCallback = function(e){
console.error('Failed to initialize the engine: ’ + e.message);
}
SIPml.init(readyCallback, errorCallback);
创建SIP堆栈
SIP堆栈是一个基本对象,必须在尝试拨打/接收呼叫、发送消息或管理状态之前创建。本节介绍如何创建堆栈并启动它。启动堆栈是一个异步函数,这意味着您必须使用事件侦听器才能收到状态更改的通知。
var sipStack;
var eventsListener = function(e){
if(e.type == ‘started’){
login();
}
else if(e.type == ‘i_new_message’){ // incoming new SIP MESSAGE (SMS-like)
acceptMessage(e);
}
else if(e.type == ‘i_new_call’){ // incoming audio/video call
acceptCall(e);
}
}

        function createSipStack(){sipStack = new SIPml.Stack({realm: 'example.org', // mandatory: domain nameimpi: 'bob', // mandatory: authorization name (IMS Private Identity)impu: 'sip:bob@example.org', // mandatory: valid SIP Uri (IMS Public Identity)password: 'mysecret', // optionaldisplay_name: 'Bob legend', // optionalwebsocket_proxy_url: 'wss://sipml5.org:10062', // optionaloutbound_proxy_url: 'udp://example.org:5060', // optionalenable_rtcweb_breaker: false, // optionalevents_listener: { events: '*', listener: eventsListener }, // optional: '*' means all eventssip_headers: [ // optional{ name: 'User-Agent', value: 'IM-client/OMA1.0 sipML5-v1.0.0.0' },{ name: 'Organization', value: 'Doubango Telecom' }]});}sipStack.start();

注册/登录
不需要注册到服务器才能进行音频/视频呼叫或发送消息。
var registerSession;
var eventsListener = function(e){
console.info('session event = ’ + e.type);
if(e.type == ‘connected’ && e.session == registerSession){
makeCall();
sendMessage();
publishPresence();
subscribePresence(‘johndoe’); // watch johndoe’s presence status change
}
}
var login = function(){
registerSession = sipStack.newSession(‘register’, {
events_listener: { events: ‘’, listener: eventsListener } // optional: '’ means all events
});
registerSession.register();
}
拨打/接听音频/视频通话
不需要登录就可以进行音频/视频通话,但如果您不是在p2p模式下使用堆栈,则强烈建议您这样做。
var callSession;
var eventsListener = function(e){
console.info(‘session event = ’ + e.type);
}
var makeCall = function(){
callSession = sipStack.newSession(‘call-audiovideo’, {
video_local: document.getElementById(‘video-local’),
video_remote: document.getElementById(‘video-remote’),
audio_remote: document.getElementById(‘audio-remote’),
events_listener: { events: ‘’, listener: eventsListener } // optional: '’ means all events
});
callSession.call(‘johndoe’);
}
要接受传入的音频/视频呼叫:
var acceptCall = function(e){
e.newSession.accept(); // e.newSession.reject() to reject the call
}
共享屏幕/桌面
与任何SIP客户端共享屏幕或桌面就像进行视频通话一样,唯一的区别是会话调用类型(调用屏幕共享而不是调用音频视频)。
屏幕/桌面共享会话不包含音频流,这意味着您需要进行第二次仅音频呼叫才能与远程方通话。您不需要打开另一个页面,因为支持多行。
有关屏幕/桌面共享的详细信息,请查看此处。
发送/接收SIP消息(类似SMS)
发送SIP消息(类似SMS)时不需要登录,但如果不在p2p模式下使用堆栈,则强烈建议这样做。
var messageSession;
var eventsListener = function(e){
console.info(‘session event = ’ + e.type);
}
var sendMessage = function(){
messageSession = sipStack.newSession(‘message’, {
events_listener: { events: ‘’, listener: eventsListener } // optional: '’ means all events
});
messageSession.send(‘johndoe’, ‘Pêche à la moule’, ‘text/plain;charset=utf-8’);
}
要接受传入的SIP消息:
var acceptMessage = function(e){
e.newSession.accept(); // e.newSession.reject(); to reject the message
console.info(‘SMS-content = ’ + e.getContentString() + ’ and SMS-content-type = ’ + e.getContentType());
}
发布状态
不需要登录就可以发布您的状态,但是如果您不在p2p模式下使用堆栈,则强烈建议您登录。
状态发布用于向您的联系人(很可能是您的通讯簿中的联系人)显示您的状态(例如在线)、心情(例如高兴)或任何个人信息。在未来的版本中,存在特性将与XCAP相结合,以允许开发功能齐全的RCS-e应用程序。
var publishSession;
var eventsListener = function(e){
console.info(‘session event = ’ + e.type);
}
var publishPresence = function(){
publishSession = sipStack.newSession(‘publish’, {
events_listener: { events: ‘’, listener: eventsListener } // optional: '’ means all events
});
var contentType = ‘application/pidf+xml’;
var content = ‘<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n’ +
‘<presence xmlns=“urn:ietf:params:xml:ns:pidf”\n’ +
’ xmlns:im=“urn:ietf:params:xml:ns:pidf:im”’ +
’ entity=“sip:bob@example.com”>\n’ +
‘<tuple id=“s8794”>\n’ +
‘\n’+
’ open\n’ +
’ im:imaway</im:im>\n’ +
‘\n’ +
‘<contact priority=“0.8”>tel:+33600000000\n’ +
‘<note xml:lang=“fr”>Bonjour de Paris

sipML5实现语音信息服务相关推荐

  1. ROS学习笔记-使用C++类用以编程(以机器人语音交互为例)

    voice_control_class.h 头文件: 使用到的文本合成等函数以及相关数据结构,以及定义一个类,定义了类的成员变量和方法 #ifndef EXAMPLE_ROS_CLASS_H_ #de ...

  2. ROS学习笔记-ROS语音识别与语音输出[1]

    说明:代码部分是基于古月居前辈的例程,在此对胡老师表示感谢!! 语音识别功能框图: 调用过程: roscore rosrun robot_voice iat_publish rostopic pub ...

  3. ROS中阶笔记(六):机器人感知—机器语音

    ROS中阶笔记(六):机器人感知-机器语音 文章目录 1 语音识别理论 2 常用语音功能包 3 科大讯飞SDK 3.1 使用前提 3.2 语音听写 3.3 语音合成 3.4 智能语音助手 4 参考资料 ...

  4. 语音交互开源平台对比

    语音识别项目: http://www.oschina.net/project/tag/203/tts-speech sf.net http://www.codesoso.net/Search?q=%D ...

  5. 2020智能语音产业生态及产业发展前景

    当前,随着智能语音技术日益成熟,越来越多的互联网巨头.传统终端制造厂商以及初创公司进军智能语音领域,新产品.新技术不断涌现,智能语音产业进入快速发展阶段.本报告重点对智能语音产业生态.产业发展前景.行 ...

  6. ROS语音交互(三)科大讯飞语音在ROS平台下使用

    以上节tts语音输出为例 下载sdk链接:http://www.xfyun.cn/sdk/dispatcher 1.下载SDK,解压: 2.在ROS工作空间下创建一个Package: catkin_c ...

  7. ros+科大迅飞语音包+图灵机器人(二)在ros上使用科大迅飞

    在工作空间catkin_ws下创建一个包 $ cd catkin_ws/src/ $ catkin_create_pkg voice_system std_msgs rospy roscpp 把科大迅 ...

  8. ROS 教程3 机器人语音 语音识别理解合成控制 ASR NLU TTS

    机器人语音 语音识别理解合成控制 ASR NLU TTS github 一.语音处理总体框架 1. 语音识别(ASR , Automatic Speech Recognition )2. 语义理解(N ...

  9. 几个常见的语音交互平台的简介和比较

    1.概述 最近做了两个与语音识别相关的项目,两个项目的主要任务虽然都是语音识别,或者更确切的说是关键字识别,但开发的平台不同, 一个是windows下的,另一个是android平台的,于是也就选用了不 ...

最新文章

  1. MySQL WHERE语句筛选操作符
  2. javascript高级程序设计第3版——第6章 面向对象的程序设计
  3. 网站集成PayPal如何设置
  4. 神策 FM | 20 种方法,让你成为用户的知心朋友
  5. SpringCloud从入门到进阶(九)——单点部署Zuul的压力测试与调优(二)
  6. 一文告诉你雾计算与云计算的区别及对物联网的价值!
  7. c#随机数的产生与输出【C#】
  8. OpenCV:无法启动此程序,因为计算机中丢失opencv_world310.dll
  9. 水刀切割设备行业调研报告 - 市场现状分析与发展前景预测
  10. 如何在IIS添加MIME扩展类型
  11. when-to-use-rebuild-vs-coalesce-vs-shrink
  12. 《软件需求工程》 读书笔记之二
  13. PLC的选型知识要点
  14. 使用Python找丑数
  15. vba excel 画折线图
  16. 应聘时漂亮的回答,一生受益的语言
  17. PCB logo 制作 视频教程 内含 PCBLogoCreator软件
  18. nginx学习,看这一篇就够了:使用:正向代理、反向代理、负载均衡, 常用命令和配置文件
  19. java中的steam流
  20. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计 - ModestMT.Zou - 博客园...

热门文章

  1. 怎么把php转变成word文档,表格怎么转换成word文档
  2. 1.1. 鼠标取词 屏幕取词技术实现原理
  3. 2020 Ansys Lumerical FDTD MODE安装步骤说明
  4. pyhton中r‘‘表达式的语法
  5. mysql mysqldumpslow 如何配置_详解 慢查询 之 mysqldumpslow
  6. 分形——谢尔宾斯基三角形
  7. 【嵌入式开发板】迅为iTOP-4412开发板板及资料介绍
  8. 粉碎机无法粉碎文件_宣布《粉碎杂志》
  9. 搜狗输入法如何java_java - 如何获取搜狗输入法的词库
  10. word中 插入好看高亮的java/c++代码