如何建立EMS服务?

增强型短消息服务开发人员的支持手册

2002年,第一版

增强型短消息服务(EMS)建立于现有的短消息平台,并在2001年以来被大多数移动电话制造商和网络运营商所支持。它建立于成熟的SMS技术之上,通过对短消息中加入图形、声音、动画和格式化文本的支持,使得发送者和接收者之间的短消息变得互动和丰富。

这篇文档适合于移动服务开发人员和内容供应人员,并为开发阿尔卡特、摩托罗拉、西门子、索尼-爱丽信公司支持EMS的手机所需要的强迫内容和服务信息。

目录

1,“为什么要建立EMS服务?”——简单介绍
1.1 概述
1.2 背景
1.3 理解一些规范

2,“EMS能做什么?”——EMS功能的描述
2.1 格式化文本
2.2 图形
2.3 动画
2.4 声音
2.5 串连
2.6 用户提示标识

3,“如何建立EMS服务?”——EMS编码的细节
3.1 TPDU参数
3.2 TP_UD
3.2.1TP_UDH  用户数据头
3.3 串连信息
3.4 图形
3.4.1 确定的图形
3.4.2 可变的图形
3.5 动画
3.5.1 预先定义的动画
3.5.2 用户定义的动画
3.6 声音
3.6.1 预先定义的声音
3.6.2 用户定义的声音或者音调iMelody
3.7 一个音调对象的例子
3.8 未认可的信息元素
3.9 用户数据UD

4,“那些手机支持EMS?”
介绍了一些支持EMS的手机和厂商。

正文

1,“为什么要建立EMS服务?”——简单介绍
1.1 概述
文档的目标人群:
。内容提供商和统计人员
。服务提供商
。载波或者网络操作人员
。开发人员

EMS通过附加的多媒体元素(声音、图片等),有可能象改进的SMS一样结束‘文本短消息’。你可以:
。请朋友喝杯咖啡,可以发送一个咖啡杯的图片,带着飘动的芳香和文字:“10分钟?”
。发送一个简单的生日短信,使用一个生日贺卡的图片和文字“Tarquin生日快乐”并播放Happy Birthday的乐曲。
。从WEB网站、新闻广告上接收一个新的付费铃声
。任何时间、任何地点的通讯!

2,“EMS能做什么?”——EMS功能的描述

EMS使用SMS标准,并允许用户在短信中添加可视可听的内容。例如,简单的动画,图片,图片,音调,声音和恰当格式的文本,凡此种种都可以无缝混合到一条短信中。

SMS,EMS不是从一台手机通过移动网络直接发送到另一个用户的手机上,而是把信息发送到其网络覆盖的范围内的短消息服务中心(SMSC),然后再发送到接收手机上。

EMS具有存储-转发机制,即只要有可能,信息就会自动送达接收手机,而不必访问网络收件箱。真正的EMS能够同时接收语音呼叫,浏览Internet等等,并且,EMS传递确认机制允许用户检查发送的正确与否。

因此,EMS作为一个方便易用的移动世界的信息平台具有很多便利。

2.1 格式化文本
支持下列文本功能:
。文字对齐方式:
左对齐(缺省)、 居中对齐、右对齐
。字体大小:
常规(缺省)、大字体、小字体
。字体风格:
常规(缺省)、加黑、斜体、下划线、 删除线

2.2 图片
图片包含在单独的SM中(短消息,或者把短消息当成串连信息的一“段”),它可以包括小图16*16点阵,大图32*32点阵,或者可变尺寸图片(最大128字节,宽度是8点阵的倍数)。大图可以通过内容提供者的WEB网站来发送,它使用一种特殊的”join”信息来连接一系列小图。

EMS版本4支持黑白图片,所有图片都是用户定义的,即不管它们是手机制造时事先存好的、下载来的、或者从其它短信存来的,它们都叫用户定义的图片,这和从无线发送的图片是一样的(参见下列一些“预定义”的描述)。

2.3 动画
包括两种不同的动画:
。预定义动画(表情动画):
这是一些预定义动画的数字,这些动画不能通过无线发送,只能用来标记它们。主要是由初始端发送指令给接收端,以播放,发声某个预定义动画。

EMS版本4.1.0预定义了6个动画(0-5),版本4.3.0增加了9个(0-14),介绍如下:

动画   描述
0      讽刺,调皮
1      高兴
2      怀疑
3      忧愁
4      WOW!
5      哭喊
6      眨眼
7      笑脸
8      漠不关心
9      喜欢/亲吻
10     困惑,烦恼
11     Tongue hanging out(?)
12     愤怒
13     疲惫
14     魔鬼

。用户定义动画:
用户定义动画由4帧组成,图片由无线传递给接收手机。支持两种不同大小:小动画8 x 8点阵,大动画16 x 16点阵。

2.4 声音
可以把声音插入到文本消息中,为接收者提供听得见的表述和体验。

。预定义声音:
这是代表某个预定义声音的数字,不能通过无线传输,只能标记作为声音的标记。EMS预在短信中定义了10种声音,接收端只要发现声音标记,就可以播放对应的声音。

声音   描述
0      钟声,高
1      钟声,低
2      叮
3      Ta Da
4      通报
5      鼓声
6      掌声
7      Fan Fare(?)
8      和声,高
9      和声,低

。用户定义的声音:
是通过无限传送的声音,单声道,iMelody格式,最大长度128字节(不用UPI,见2.6节)

2.5 串连
EMS标准支持信息的串连,即手机可以自动组装一系列短信。因为受到单条短信所能运送的信息长度的限制——GSM单条短信的信息长度只能达到140字节,所以串连功能十分有用。

借此手机可以发送和接收更长更丰富的信息。EMS标准支持255个短信串连成一个,但是当前的手机支持大约3~10段,可以参看手机的手册。

2.6 用户提示标识(User Prompt Indicator)____原文用斜体
这个功能在3GPP TS 23.040 版本 4中有介绍,允许手机缝合图片和声音,允许手机在接收短信时执行特殊活动(存储、手机个性化等等).UPI典型应用是由内容提供商发送内容给用户,参见第4章了解更多内容。

3,“如何建立EMS服务?”——EMS编码的细节

如前所述,EMS基于GSM SMS标准体系(见1.3 理解一些规范)。使用传送协议用户数据首部(TP_UDH)允许在一个普通短信(SM)中比文本本身更优先使用二进制数据,这个二进制数据(比如图片或声音)在SM (in GSM)中消耗了140字节的“有效载荷”。

描述如下:
“标准”短信:
[           TP-User Data (text message)          ]
|<--------------------SM字段,字节-------------->|

增强短信:
[      TP_UDH   |        TP-User Data            ]
|<--------------------SM字段,字节-------------->|

实际在应用层面上,一条短消息常用TP_DU(传送协议数据单元)来管理,TP_DU包含一系列参数,诸如信息类型、长度、嵌入的EMS元素和相关文本。TP_DU结构如下:

3.1 TP_DU参数
TP_DU参数将被设置成下列形式:
。 TP-UDHI = 1,标记TP_UD内的TP-UDH被设置,
。 TP-PID=推荐定义为00
。 TP-DCS =“UCS2 (16 bits)” 或者 “GSM 7 bit default alphabet”

解释了TP-UDL字段之后,将立即处理TP-UDH。是否放置首部,对TP-UD的总长度是没有影响的,即TP-UDL不受TP-UDH的存在影响。

3.2 TP_UD
3.2.1 TP_UDH 用户数据首部

TP_UDH由下列部分组成:
&Oslash; TP_UDHL,用户数据首部长度
&Oslash; 后续的一个或多个信息元素

“The UDHL field shall be the integer representation of the number of octets
within the "User-Data-Header" information fields which follow and shall not
include itself in its count or any fill bits which may be present.”

信息元素可以出现在任何序列:

|<--------------------IE字段,可变长度----------------------->|
[      IE Identifier     |      IE Length   |      IE Data   ]

其中,IE Identifier(IEI)标识信息元素的类型,比如音调、文本格式化命令、串连指示等;
IE Length(IEL)以八位位组octet告知IED的长度,如果IEI不能被识别,它帮助手机跳过IED;
IE Data(IED)包含信息元素特定的信息,每个IE根据其类型不同有着特定的格式。

IEI编码如下:
值(hex)      意义
00      串连的短信,8-bit参考号
08      串连的短信,16-bit参考号
0A      文本格式化
0B      预定义声音
0C      用户定义的声音 (iMelody最大128 bytes)
0D      预定义动画
0E      大动画 (16*16 times 4 = 32*4 =128 bytes)
0F      小动画 (8*8 times 4 = 8*4 =32 bytes)
10      大图片 (32*32 = 128 bytes)
11      小图片 (16*16 = 32 bytes)
12      可变尺寸图片
13      用户提示标识User Prompt indicator
14-1F   保留给未来EMS功能

3.3 串连信息

这种机制把一系列短信串连成长的短信。

1) 8-bit参考号
IEI及其后的IEDL、IED将被设置成下列数值,存放在连接短信SM的每个字段中:
IEI = 00 (hex)
IEDL = 3
IED = 下列代码:

Octet 1:连接短信息的8bit参考号
标记这个需要串连的单独短信的参考号,使用一个位组octet,其中包括一个以256为模的计数器。这个参考号对每个短信来说保持不变,以此作为拼接一个串连短信的依据。

Octet 2:串连短信中短消息的最大数量
这个位组octet包括0-255范围的数字,以标识一条串连短信中每个单独短信的总的个数,即该串连短信由多少个短信组成。这个数值从1开始,并在每个单独的短信中保留,以拼接整条短信。如果这个数值为0,则接收者忽略整个信息元素(IE)。

Octet 3:当前短信的序号
这个位组octet包括0-255范围的数字,以标识一条串连短信中每个单独短信的顺序号。这个数值从1开始,并在每条单独短信发送过程中加1。如果这个数值为0,或者大于Octet 2中的数值,则接收者忽略整个信息元素(IE)。

2) 16-bit参考号
IEI及其后的IEDL、IED将被设置成下列数值,存放在连接短信SM的每个字段中:
IEI = 08 (hex)
IEDL = 4
IED = coded as follows

Octet 1-2:连接短信息的16bit参考号
标记这个需要串连的单独短信的参考号,使用一个位组octet,其中包括一个以65536为模的计数器。这个参考号对每个短信来说保持不变,以此作为拼接一个串连短信的依据。

Octet 3:串连短信中短消息的最大数量
这个位组octet包括0-255范围的数字,以标识一条串连短信中每个单独短信的总的个数,即该串连短信由多少个短信组成。这个数值从1开始,并在每个单独的短信中保留,以拼接整条短信。如果这个数值为0,则接收者忽略整个信息元素(IE)。

Octet 4:当前短信的序号
这个位组octet包括0-255范围的数字,以标识一条串连短信中每个单独短信的顺序号。这个数值从1开始,并在每条单独短信发送过程中加1。如果这个数值为0,或者大于Octet 3中的数值,则接收者忽略整个信息元素(IE)。

示例:TP_UDHI=1,则TP_UD中包含TP_UDH,TP_UD采用UCS2编码以支持汉字,串连短信需要2条单独短信拼接,则TP_UDH的格式可以是:
05  00  03  1A  02  01
其中,05是TP_UDHL,后续是5个字节
00是IEI,为串连的短信,8-bit参考号
03是IEDL,表示后续有3个字节的IED
1A,是Octet 1,该串连短信的特殊标识
02,是Octet 2,该串连短信包含2条单独短信
01, 是Octet 3,当前是第1条单独短信

UCS2时,每条单独短信最多可以使用(140-6×2)/2 = 67个汉字(英文和数字按16bit等同对待),那么在IEI=00时,可以发送最多255个单独短信,总计的汉字67×255=17085个;在IEI=08时,可以发送最多65536个单独短信,总计的汉字67×65536个(这得多少钱啊!)。

3.4以后章节暂不翻译。本文完。

译文:如何建立EMS服务?相关推荐

  1. VS2010建立Windows服务项目时的一些问题

    1.调试所建立的Windows服务项目. 网上找了一些有关Windows服务调试的方法,很多大牛们建议Copy到Winform中调试,本菜鸟经过领导指点有个很好的调试方法,Mrak一下: 如何建立就不 ...

  2. LIVE555建立RTSP服务记录

    在官网上面 http://www.live555.com/liveMedia/#config-unix下载最新源码,并进行编译,同时官网上面告诉了你怎么样编译已经不同平台对应需要修改的内容 一.arm ...

  3. 用VC++建立Service服务应用程序

    用VC++建立Service服务应用程序 作者:李佳颖(niying) 下载源代码 本文主要介绍了 OpenSCManager.CreateService.OpenService.ControlSer ...

  4. 1.6 建立Servers服务(2020-12-6)

    1.6 建立Servers服务 Servers服务是Eclipse工具中的一个功能模块,用来加载和管理本机安装的服务器,为Eclipse中建立的项目提供运行所需的环境,没有Servers服务就不能启动 ...

  5. 中国邮政EMS服务实在是不能让人满意

    中国邮政EMS服务实在是不能让人满意. 今天由于要淘宝发货,所以来到了中国邮政营业厅.网上查的都是8点到8点半开门.8点半到了邮政营业厅门口,发现关着门,保安把守,门口已经有1-2位等着服务了.隔着窗 ...

  6. 重大利好!印度国家支付公司批准WhatsApp在UPI上建立支付服务!

    早在2018年的年初,WhatsApp就开始在印度对100万用户测试其支付服务,但是受限于各方面掣肘,WhatsApp在印度的支付业务一直未能扩展开来. 母公司Facebook也一直致力于想让What ...

  7. oracle服务开机启动,Linux下建立Oracle服务及其开机自启动

    操作环境:CentOS 6.7 + Oracle 11gR2 手工启动Oracle实例: 启动数据库: sqlplus / as sysdba startup 手动启动监听: lsnrctl star ...

  8. 关于C#建立FLASH服务端的安全沙箱问题

    注意:XMLSocket 接收到服务端下发的数据时,将连续放于接收缓冲区,直到接收到 "\0" 字节(字节内容为 ASCII 值 0),才认为接收完成,并调用相应的 onData ...

  9. 使用Prometheus和Linkerd建立Kubernetes服务水平目标(SLO)的指南

    客座文章最初由Kevin LeimkuhLer在Buoyant的博客上发布 有了服务网格,SLO就容易多了 在本教程中,你将学习如何使用Prometheus(一个开源时间序列数据库)和Linkerd( ...

最新文章

  1. 一个重复try语句的实验
  2. 99% 的同学写不出好代码,都是因为这个问题!
  3. MySQL更换内存分配器
  4. 计算 期望与方差(mean and Variance)在 Tensorflow 与 Numpy 对比
  5. 互联网盈利模式研习笔记之一:流量变现
  6. truffle部署到测试网rinkeby
  7. Java基础,Java的main方法与构造方法之间的联系,以及构造方法的联系和使用,栈堆理解
  8. 理解RESTful架构(转)
  9. 20个开发人员非常有用的Java功能代码(一)
  10. Eclipse使用教程(入门级)
  11. 用python打印九九乘法表
  12. python123月份名称缩写_月份及其缩写
  13. 妖精为什么吃不到唐僧肉
  14. 计算机解题的过程实际上是实施某种算法,计算机等级考试二级C考点.doc
  15. pyqt5 制作壁纸切换工具实例 第一章
  16. 电商红包雨是如何实现的?拿去面试用(典型高并发)
  17. iOS Autorelease Runloop
  18. Mac百度网盘下载慢怎么办?Mac百度网盘下载满速教程
  19. js图片编辑器插件Filerobot
  20. android音效的加载方式

热门文章

  1. 用计算机播放vcd教案,川教版信息技术七下第11课《CD与VCD播放》教案.doc
  2. ESXI命令行启动虚拟机
  3. 富士康诅咒仍在继续:21岁职工跳楼
  4. 关于保存数据时,提取数据特征的数量和样本数不匹配的原因
  5. QQ被盗后如何恢复好友
  6. 处理2倍图片和3倍图片
  7. 【刘翔四连冠将是中国田径的悲哀】
  8. 腾讯视频客户端在文件资源浏览器的顽固图标如何删除
  9. 清除sys.aud$
  10. 一款非常有趣的中国版本的Excalidraw作图工具drawon(桌案)