专利名称:Epon系统中基于消息等待事件实现语音留言功能的方法
技术领域:
本发明涉及EPON网络系统技术领域,特别涉及EPON网络系统中的语音功能技术领域,具体是指ー种EPON系统中基于消息等待事件实现语音留言功能的方法。
背景技术:
由于我国通讯业基础相对发达国家来说仍比较落后,以及部分运营商的限制,国内对应MWI (Message Waiting Indication,消息等待指示)在语音留言这一领域的应用开发尚处于萌芽状态,尚未形成统ー的开发标准及完善的应用方案。而国际上这领域技术仍处于未开放状态,相关的资源不能共享,使得目前对于该功能也未形成统ー的支持。所有这些都阻碍了 MWI及语音留言在实际中的应用,用户也没有机会充分体验该功能带来的便捷。然而,随着用户日益增长的需求及基于IP的语音服务的逐渐成熟,在通话清晰度与音质方面与PSTN (Public Switched Telephone Network,公共交换电话网络)旗鼓相当及VOIP (Voice Over Internet Protocol)应用兴起的情况下,该项服务也必将成为通讯领域新的增长点和竞争点。现有技术中MWI在语音留言领域的应用存在以下缺陷I、依据现有的SIP(Session Initiation Protocol,会话初始协议)信令交互标准,如图I及图2所示,终端通过发送SUBSCRIBLE (订阅)请求给SS (SIP server, SIP服务器),建立ー个DIALOG (会话),SS通过回送NOTIFY (状态通知)返回语音留言信息,后续SS发送实时留言信息的NOTIFY必须在该DIALOG存在的基础下进行,如果该DIALOG不存在,则终端对该信令做丢弃处理,无法实现语音留言功能。2、stutter dial tone (断续拨号音),终端在收到状态通知后,如果存在语音留言,则当用户摘机时听断续拨号音,断续拨号音的通知方式较为复杂。3>VMWI (Visual Message Waiting Indication,可视消息等待指不)终端在收到状态通知后,如果存在语音留言,終端在空闲状态下,通过LCD/LED显示做相应的消息等待提示,但在非空闲状态下无法进行提示。现有技术中,通过定义形态标准(即VMWI)和行为标准(即AMWI,Audio MessageWaiting Indication,语音消息等待指示),使绝大多数话机在VOIP领域中支持MWI功能,即更简单高效开发应用MWI功能,扩大MWI在现实领域中的应用,包括语言留言等。MWI在语言留言中的具体应用需求,可以归纳如下I、形态标准a.带LCD的话机如果终端所在线路的语音信箱存在语音留言,当終端注册上时会显示相关标识(具体形态取决于话机生产厂家),提示存在语音留言,比如显示信封图案。否则不显示相关的标识。b.带LED灯话机如果所在线路的语音信箱存在语音留言,当終端注册上时话机LED灯会点亮或闪烁(取决于话机生产厂家),提示存在语音留言。否则话机LED灯不做明显提示。C.带IXD和LED灯话机VMWI对语音留言的应用,同上述a或b,具体取决于话机生产厂家。d.不带IXD和LED灯话机这种情况下一般都通过下面所说的行为标准提示语音
留言信息。2、行为标准如果终端所在线路的语音信箱存在语音留言,在话机摘机时,先听到断续拨号音(stutter dial tone),再听正常的拨号音(dial tone),否则话机摘机时按常态处理(比如如果注册上时用户听拨号音)。
发明内容
本发明的目的是克服了上述现有技术中的缺点,提供ー种能够在不存在DIALOG (会话)的情况下,正确处理NOTIFY (状态通知),同吋,简化断续拨号音的处理,且实现非空闲状态下的状态通知处理,从而有效避免现有技术中收到语音留言的状态通知无法被正确处理的问题,且应用方式简便,实现成本低廉,应用范围广泛的EPON (EthernetPassive Optical System,以太无源光网络)系统中基于消息等待事件实现语音留言功能的方法。EPON系统包括会话初始协议SIP服务器和连接于所述的会话初始协议SIP服务器的多个用户端。为了实现上述的目的,本发明的EPON系统中基于消息等待事件实现语音留言功能的方法包括以下步骤(I)所述的用户端从会话初始协议SIP服务器接收到会话初始协议SIP信息;(2)所述的用户端判断其自身与会话初始协议SIP服务器之间是否已存在对话,若是,则进入步骤(3),若否,则进入步骤(4);(3)所述的用户端对所述的会话初始协议SIP信息进行会话初始协议SIP通用处理,并进入步骤(5);(4)所述的用户端向所述的会话初始协议SIP服务器返回应答信息,并进入步骤(5);(5)所述的用户端判断所述的会话初始协议SIP信息的类型是否为通知信息,若是,则进入步骤(6),若否,则退出本方法;(6)所述的用户端判断所述的通知信息是否为消息等待事件,若是,则进入步骤(7),若否,则退出本方法;(7)所述的用户端处理所述的消息等待事件,对语音留言进行信息等待指示。该EPON系统中基于消息等待事件实现语音留言功能的方法中,所述的步骤(6)具体包括以下步骤(61)所述的用户端判断所述的通知信息是否为消息概述事件,若是,则进入步骤
(62),若否则退出本方法;(62)所述的用户端解析所述的通知信息;(63)所述的用户端判断经解析的通知信息是否为消息等待事件,若是,则进入步骤(64),若否,则退出本方法;(64)所述的用户端对所述的通知信息进行消息等待事件标识,并进入步骤(7)。该EPON系统中基于消息等待事件实现语音留言功能的方法中,所述的步骤(7)具体包括以下步骤(71)所述的用户端判断其自身是否处于空闲状态,若是,则进入步骤(79),若否,则进入步骤(72);(72)所述的用户端保存所述的消息等待事件标识,并进入步骤(73); (73)所述的用户端检测到所述的用户端进入空闲状态后,进入步骤(74);(74)所述的用户端判断所保存的消息等待事件标识是否仍然有效,若有效,则进入步骤(79),若无效,则退出本方法;(75)所述的用户端对所述的语音留言进行信息等待指示。该EPON系统中基于消息等待事件实现语音留言功能的方法中,所述的用户端检测到所述的用户端进入空闲状态,具体为所述的用户端检测到用户端内部挂机事件。该EPON系统中基于消息等待事件实现语音留言功能的方法中,所述的用户端检测到所述的用户端进入空闲状态,具体为所述的用户端检测到摘机事件,并检测到会话初始协议SIP服务器发送的拨号音。该EPON系统中基于消息等待事件实现语音留言功能的方法中,所述的用户端对所述的语音留言进行信息等待指示,具体为所述的用户端对所述的语音留言进行可视信息等待指^^或首频彳目息等待指^^。采用了该发明的EPON系统中基于消息等待事件实现语音留言功能的方法,当用户端与会话初始协议SIP服务器之间的对话不存在时,其并不丢弃SIP信息,而是向所述的会话初始协议SIP服务器返回应答信息,并进一歩处理该SIP信息的状态通知,从而避免了SIP服务器的重发;另外,本发明的方法在用户端非空闲状态下,保存消息等待事件标识,并在用户端恢复空闲状态后,做进ー步处理;且有效简化了断续拨号音的处理方法,从而避免现有技术中收到语音留言的状态通知无法被正确处理的问题,以此提供一种应用方式简便,实现成本低廉,应用范围广泛的EPON系统中基于消息等待事件实现语音留言功能的方法。
图I为现有技术中实现语音留言状态查询的SIP信令图。图2为现有技术中实现语音留言实时通知的SIP信令图。图3为本发明EPON系统中基于消息等待事件实现语音留言功能的方法的步骤流程图。图4应用为本发明的方法的语音留言实时通知的SIP信令图。图5为本发明实际应用中的VMWI正常处理流程示意图。图6为本发明实际应用中的用户终端变为IDLE空闲状态时的VMWI处理流程示意图。图7为本发明实际应用中的AMWI简单处理流程示意图。
具体实施例方式为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。请參阅图3所示,为本发明EPON系统中基于消息等待事件实现语音留言功能的方法的步骤流程图。在一种实施方式中,所述的EPON系统包括会话初始协议SIP服务器和连接于所述的会话初始协议SIP服务器的多个用户端,所述的EPON系统中基于消息等待事件实现语音留言功能的方法包括以下步骤
(I)所述的用户端从会话初始协议SIP服务器接收到会话初始协议SIP信息;(2)所述的用户端判断其自身与会话初始协议SIP服务器之间是否已存在对话,若是,则进入步骤(3),若否,则进入步骤(4);(3)所述的用户端对所述的会话初始协议SIP信息进行会话初始协议SIP通用处理,并进入步骤(5);(4)所述的用户端向所述的会话初始协议SIP服务器返回应答信息,并进入步骤
(5);(5)所述的用户端判断所述的会话初始协议SIP信息的类型是否为通知信息,若是,则进入步骤(6),若否,则退出本方法;(6)所述的用户端判断所述的通知信息是否为消息等待事件,若是,则进入步骤
(7),若否,则退出本方法;(7)所述的用户端处理所述的消息等待事件,对语音留言进行信息等待指示。在一种较优选的实施方式中,所述的步骤(6)具体包括以下步骤(61)所述的用户端判断所述的通知信息是否为消息概述事件,若是,则进入步骤(62),若否则退出本方法;(62)所述的用户端解析所述的通知信息;(63)所述的用户端判断经解析的通知信息是否为消息等待事件,若是,则进入步骤(64),若否,则退出本方法;(64)所述的用户端对所述的通知信息进行消息等待事件标识,并进入步骤(7)。在另ー种较优选的实施方式中,所述的步骤(7)具体包括以下步骤(71)所述的用户端判断其自身是否处于空闲状态,若是,则进入步骤(79),若否,则进入步骤(72);(72)所述的用户端保存所述的消息等待事件标识,并进入步骤(73);(73)所述的用户端检测到所述的用户端进入空闲状态后,进入步骤(74);(74)所述的用户端判断所保存的消息等待事件标识是否仍然有效,若有效,则进入步骤(79),若无效,则退出本方法;(75)所述的用户端对所述的语音留言进行信息等待指示。其中,步骤(73)中所述的用户端检测到所述的用户端进入空闲状态,具体为所述的用户端检测到用户端内部挂机事件;或具体为所述的用户端检测到摘机事件,并检测到会话初始协议SIP服务器发送的拨号音。在一种更优选的实施方式中,步骤(7)中所述的用户端对所述的语音留言进行信息等待指示,具体为所述的用户端对所述的语音留言进行可视信息等待指示或音频信息等待指不。在实际应用中,本发明的目的在于I、突破原有关于丽I的SIP信令交互做法传统的做法-終端通过发送SUBSCRIBLE请求给SS,并建立ー个DIALOG,SS通过回送NOTIFY返回语音留言信息,然而,对于同样的类型的状态通知如果不在该DIALOG中,则不会做处理。
2、对非空闲状态时VMWI进行处理对于非空闲状态的话机,可能导致收到语音留言的状态通知不能正确处理问题,采用优化后方案,可以避免该问题。3、简单化断续拨号音的处理改变思路,摘机时的断续拨号音统ー根据条件触发方式,由上层协议/应用做控制,避免硬件上的差异导致不能正确处理。现有技术中,如图2所示,如果UA收到没有对应的DIALOG的状态通知,则做丢弃处理。实际上按照原有协议的做法,可能会导致有的SS会重发(SS在没有收到NOTIFY的响应下,会误认为网络包丢失,启用重发机制),浪费网络资源,也没有实际意义(如果要禁用该对应功能项,可以在UA中做到)。所以完全可以对该状态通知作正面回应,在本发明中,如图4所示,对不存在的DIALOG对应的NOTIFY处理,在检测到DIALOG不存在吋,补充该部分处理内容,回送2000K给SS,并处理该状态通知。本发明的方法中,收到NOTIFY处理的具体应用程序如下
RvStatus RVCALLCONV vpsip—sipctrl—Subs—StateChangedEvHandler JSiotify (
IN RvSipTranscHandlehTransc,
INRvSipTranscOwnerHandle
hAppTransc,
IN RvSipTransactionStateestate,
INRvSipTransactionStateChangeReason
eReason)
{
RvSipMsgHandle hMsg= NULL;
RvStatusrv= RV OK;
charszMsg[1024] = { OxO };
intnBufSize = sizeof(szMsg);
VPSIP TERM DATA ^pTermData = NULL; intendptlndex =〇;
chars zBuf[64] = { OxO };
char^pszBuffニ NULL;
char*pszEvent = NULL;
char^pszStr= NULL;
SUB MESSAGE—TYPE subType = SUBSCRIBLE NOT—SET; inti= ;
#define EVENT STR "event: ,T
Λ获得sip消息V
rv = RvSipTransactionGetReceivedMsg(hTransc, &hMsg); if (rv ! = RV OK)
{ 一
VPSIP L〇GERR〇R(nInvalid hTransc = %p, rv = %d", hTransc, rv); return rv;
}
vpsipUtil decodemsg2buf(szMsg, nBufSize , hMsg); vpcom_util_tolower(szMsg);
卜此处获取对应的线路*/
for ( i = O; i < MAX_LINE NUM; i + 4-)
{ — —memset(szBuf, OxO, sizeof (szBuf));
sprintf (szBuf, "sip :%s , g_wor k. term[i] ·termld); vpcom util tolower(szBuf); if (strstr(szMsg, szBuf))
{
pTermData = &g work . term[i]; break;
}
}
if ( NULL pTermData )
{
VPSIP_LOGERROR("Invalid szMsg = %s", szMsg); return rv;
}
/*获取NOTIFY的事件类型MWI/IMS-SIP等*/ pszEvent = strstr(szMsg, EVENT STR); pszEvent = pszEvent + strlen(EVENT STR); pszStr ^ strstr (pszEvent, "\r\n"); if ( NULL == pszStr )
{
pszStr = strstr (pszEvent, TT\t\n");
}
if ( NULL == pszStr )
{
pszBuff = s zMsg;
}
else
{
memset(szBuf, 0x0, sizeof (szBuf));
strncpy(szBuf, pszEvent, pszStr 一 pszEvent);
pszBuff = szBuf;
}
if ( strstr(pszBuff, MWI_SUBS_EVENT ))
{ ~ ~ subType - SUBSCRIBLE MWI_NML;
} ~ ~
else if ( strstr (pszBuff, IMS_SUBS_REG EVENT ))
{ - -- subType ニ SUBSCRIBLE_IMS_REG;
} ~ ~
else if ( strstr (pszBuff, IMS_SUBS_SVR_EVENT ))
{ - -- subType - SUBSCRIBLE_IMS_SVR;
} ~ ~
/*处理NOTIFY消息Vswitch (subType)
{
case SUBSCRIBLE MWI_NML:
{ _ _
/* 处理 MWI */
rv=vpsip mwi NotificationHandle(pTermData->termhandle,
pTermData->hMwiSubs, hMsg); break;
}
case SUBSCRIBLE IMS_REG:
case SUBSCRIBLE—IMS—SVR: default:
{
break;
}
} return rv;
}另外,VMWI处理时,如果终端内部处于IDLE状态则指示VMWI,否则,只设置标识,简单流程如图5所示。本发明中处于非空闲状态时的VMWI的具体处理应用程序如下MSGRSP—STATUS vpsProcMsg_linectrl_evt(MSG—DTL—LNCTRLEVT ^pEvtData)
{ — — ——
MSGRSP—STATUSrtn = MSGRSP—SUCCESS;
RvIppTerminalHandle hTerm = O;
RvChar digit = O;
/*此处省略部分无关代码*/
/*获取对应线路的句柄*/
hTerm = VDSipUtil _GetTermHandle (pEvtData->lmeid); if ( NULL == hTerm )
{
rtn = MSGRSP SEO FLOW ERR;
VPSIP—L〇GERR〇R(nInvalid term handle (%d) , may not registered", hTerm); return rtn;
}
VPSIP L〇GINF〇("pEvtData—>evt = %d !", pEvtData->evt); switch(pEvtData->evt)
{
case DRCEVT DTMFO: case DRCEVT DTMFl: case DRCEVT DTMF2: case DRCEVT DTMF3: case DRCEVT DTMF14 : case DRCEVT DTMF5: case DRCEVT DTMF6: case DRCEVT DTMF7: case DRCEVT DTMF18 : case DRCEVT DTMF19 : case DRCEVT DTMFS: case DRCEVT DTMFH:
{ 一
/*此处省略部分无关代码*/ break;
}
/*此处省略部分无关代码*/ case DRCEVT ONHOOK:
{
/* used for vmwi the envelope got disaDpeared */
if ( vpsipUtil—IsVMWIndF1Iag (pEvtData->lineid) == rvClose ){ vpsip—drc—StopVMWIndication(&hTerm);
} ——
else if ( vpsipUtil—IsVMWIndF1Iag (pEvtData->lineid) == rvOpen )
{ 一
vpsip—drc—StartVMWIndication(&hTerm);
} ——
卜此处省略其他无关代码” break;
}
/*此处省略部分无关代码*/default:
{
break;
}
}
return rtn;
}当终端状态变化成IDLE (空闲状态)时,如图6所示,先检查保存的MWI标识是否有效,若有效则做VMWI的打开/关闭指示。本发明中具体的MWI指示处理应用程序如下/* 处理 MWI */
RV—Status vpsip_mwi_NotificationHandle(
IN RvIppTerminalHandle hTerm,
IN RvSipSubsHandle hSubs,
IN RvSipMsgHandle hMsg)
{
RV—Statusrv= RV OK;
RvSipBodyHandle hBody;
RV—CHAR^rawBuffer, *szT〇k;
RV—UINT32length;
RvBoolbNewMsg = rvFalse;
charszSplit[64] = { OxO };
charszBuf f [ 64] = { OxO };
chars zVal [ 64 ] = { OxO };
intIineId= 0;
/*获取线路*/
IineId = vpsipUtil—GetEndpt(hTerm);
/* 获取消息体(SIP 的 message body) */ hBody = RvSipMsgGetBodyObject( hMsg); if (hBody == NULL)
{
VPSIP LOGERROR("Failed to RvSipMsgGetBodyObject hBody = NULL");return rv;
}
length = RvSipBodyGetBodyStrLength( hBody); rvMtfAllocatorAlloc(length+1, (void**)&rawBuffer);
rv = RvSipBodyGetBodyStr( hBody, rawBuffer, length, &length); if (rv != RV OK)、
{ 一
VPSIP LOGERROR("Failed to RvSipBodyGetBodyStr rv = %d",rv);return rv;}
^(rawBuffer + length) = OxO; if ( strstr (rawBuffer, TT\r\n"))
{
strcpy (szSplit, M \r\nTT);
}
else
{
strcpy(szSplit, "\t\n");
}
VPSIP LOGINFO("rawBuffer = %s ”, rawBuffer);
卜
* 解析消息体,并获取MWI标识(bNewMsg)
V
for ( s zTok ニ strtok( rawBuffer, szSplit) ; szTok; szTok ニ strtok( NULL,szSplit))
{
strcpy(szBuff, szTok); vpcom_util_TrimChar(szBuff, ' 1);
VPSIP_L〇GINF〇(nSzBuff - %s ", szBuff);
if (strncasecmp(szBuff,"Messages-Waiting :",
strlen("Messages-Waiting :")) ==0)
{
strcpy(szVal, szBuff + strlen("Messages-Waiting :)); vpcom util TrimChar(szVal,'');
VPSIP_LOGINFO("szVal = %s ”, szVal);
bNewMsg ニ (strcasecmp(szVal,"yes”)ニニ0) rvTrue: rvFalse; break;
}
I
卜
*发送对应的SIGNAL (信号)给话机
V
if(bNewMsg)
{ /* 打开 MWI V
/*保存断续音标识*/
vpsipUtil SetStutterFlaa(lineld, rvTrue);
VPSIP L〇GIMF〇(nNew message arrived");
卜发送VMWI的SIGNAL (信号)给话机*/
{
vpsiD drc StartMWITone(&hTerm);
VPSIP—L〇GINF〇(nvpsip drc StartMWITone");
} ——
/*发送VMWI的SIGNAL (信号)给话机,并保存标识用于状态跳转成IDLE后处理*/
{
vpsiD drc StartVMWIndication(&hTerm); vpsiDUtil SetVMWIndF1Iaa (line Id, rvTrue);
VPSIP L〇GINF〇(nvpsip drc StartVMWIndication")ス } ——
VPSIP_L〇GINF〇(nIPP — 一>Start Signal: MWI, term(%p) ”,hTerm);
} _ else
{ /* 关闭 MWI */
/*保存断续音标识*/
vpsipUtil—SetStutterFlaa(lineld, rvFalse);
VPSIP_L〇GINF〇(nN〇 messages");
/*发送VMWI的SIGNAL (信号)给话机*/
{
vpsip—drc _St〇pMWIT〇ne(&hTerm);
VPSIP L〇GINF〇(nvpsip_drc StopMWITonen);
} ——
/*发送VMWI的SIGNAL (信号)给话机,并保存标识用于状态跳转成IDLE后处理*/
{
vpsip—drc _St〇pVMWIndicati〇n(&hTerm); vpsipUtil—SetVMWIndF1Iag (lineld, rvFalse);
VPSIP—L〇GINF〇(nvpsip—drc—StopVMWIndicationn);
} ——
}
rvMtfAllocatorDealloc(rawBuffer, length+1);return RV—Success;
} 一同时,在本发明的方法中,对断续拨号音的处理,如图7所示,采用替换策略,SP如果摘机后,应用层指示听DT音时,先检查MWI标识,根据MWI再判定是否有效,如果有效则听断续拨号音。本发明中简单化的断续拨号音的具体处理应用程序如下
void RVCALLCONV vpsip_mtf_StartSignalCB(
RvIppTerminalHandlehTerm,
RvMtfTerminalAppHandle hAppTerm,
RvMtfSignalTypesignalType,
RvMtfSignalStatesignalState,
RvMtfSignaIParams*signalParams)
{
RvChar* pMovePos = NULL;
RvCCConnection*ptActiveConnection = NULL;
RvCCConnection*ptOtherConnection = NULL;
int lineld = 0;
/*获取线路*/
lineld = vpsipUtil GetEndpt(hTerm);
/*此处省略部分无关代码*/ switch (signalType)
{
case RV—MTF SIGNAL DIALTONE: / k 在发送 DT 音时カロ入 AMWI 的处理 */
VPSIP LOGINFO("get dial tone signal\n"); vpsip—mtf—Warmline(hTerm);
VPSIP LOGINFO("vpsipUtil IsStutterFlag[%d] = %d \nM, lineld,vpsipUtil—IsStutterFlag(lineld));
Λ此处做AMWI处理V
if ( vpsipUtil—IsStutterF1Iag (lineld))
{ 一
vpsip drc—StartSTUTTERTone(&hTerm);
} —— else
{
vpsip—drc—StartDialTone(&hTerm);
} —— break;
/*此处省略其他无关代码*/
}
}采用了该发明的EPON系统中基于消息等待事件实现语音留言功能的方法,当用户端与会话初始协议SIP服务器之间的对话不存在时,其并不丢弃SIP信息,而是向所述的会话初始协议SIP服务器返回应答信息,并进一歩处理该SIP信息的状态通知,从而避免了SIP服务器的重发;另外,本发明的方法在用户端非空闲状态下,保存消息等待事件标识,并在用户端恢复空闲状态后,做进ー步处理;且有效简化了断续拨号音的处理方法,从而避免现有技术中收到语音留言的状态通知无法被正确处理的问题,以此提供一种应用方式简便,实现成本低廉,应用范围广泛的EPON系统中基于消息等待事件实现语音留言功能的方法。在此说明书中,本发明已參照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1.一种EPON系统中基于消息等待事件实现语音留言功能的方法,所述的EPON系统包括会话初始协议SIP服务器和连接于所述的会话初始协议SIP服务器的多个用户端,其特征在于,所述的方法包括以下步骤 (1)所述的用户端从会话初始协议SIP服务器接收到会话初始协议SIP信息; (2)所述的用户端判断其自身与会话初始协议SIP服务器之间是否已存在对话,若是,则进入步骤(3),若否,则进入步骤(4); (3)所述的用户端对所述的会话初始协议SIP信息进行会话初始协议SIP通用处理,并进入步骤(5); (4)所述的用户端向所述的会话初始协议SIP服务器返回应答信息,并进入步骤(5); (5)所述的用户端判断所述的会话初始协议SIP信息的类型是否为通知信息,若是,则进入步骤(6),若否,则退出本方法; (6)所述的用户端判断所述的通知信息是否为消息等待事件,若是,则进入步骤(7),若否,则退出本方法; (7)所述的用户端处理所述的消息等待事件,对语音留言进行信息等待指示。
2.根据权利要求I所述的EPON系统中基于消息等待事件实现语音留言功能的方法,其特征在于,所述的步骤(6)具体包括以下步骤 (61)所述的用户端判断所述的通知信息是否为消息概述事件,若是,则进入步骤(62),若否则退出本方法; (62)所述的用户端解析所述的通知信息; (63)所述的用户端判断经解析的通知信息是否为消息等待事件,若是,则进入步骤(64),若否,则退出本方法; (64)所述的用户端对所述的通知信息进行消息等待事件标识,并进入步骤(7)。
3.根据权利要求I所述的EPON系统中基于消息等待事件实现语音留言功能的方法,其特征在于,所述的步骤(7)具体包括以下步骤 (71)所述的用户端判断其自身是否处于空闲状态,若是,则进入步骤(79),若否,则进入步骤(72); (72)所述的用户端保存所述的消息等待事件标识,并进入步骤(73); (73)所述的用户端检测到所述的用户端进入空闲状态后,进入步骤(74); (74)所述的用户端判断所保存的消息等待事件标识是否仍然有效,若有效,则进入步骤(79),若无效,则退出本方法; (75)所述的用户端对所述的语音留言进行信息等待指示。
4.根据权利要求3所述的EPON系统中基于消息等待事件实现语音留言功能的方法,其特征在于,所述的用户端检测到所述的用户端进入空闲状态,具体为 所述的用户端检测到用户端内部挂机事件。
5.根据权利要求3所述的EPON系统中基于消息等待事件实现语音留言功能的方法,其特征在于,所述的用户端检测到所述的用户端进入空闲状态,具体为 所述的用户端检测到摘机事件,并检测到会话初始协议SIP服务器发送的拨号音。
6.根据权利要求I至5中任一项所述的EPON系统中基于消息等待事件实现语音留言功能的方法,其特征在于,所述的用户端对所述的语音留言进行信息等待指示,具体为所述的用户端对所述的语音留言进行可视信息等待指 示或音频信息等待指示。
全文摘要
本发明涉及一种EPON系统中基于消息等待事件实现语音留言功能的方法,在该方法中,UA接收到SIP信息时,首先判断对话是否存在,当UA与SIP服务器之间的对话不存在时,本发明并不丢弃SIP信息,而是向SIP服务器返回应答信息,并进一步处理该SIP信息的状态通知,从而避免了SIP服务器的重发;另外,本发明的方法在用户端非空闲状态下,保存消息等待事件标识,然后在用户端恢复空闲状态后做进一步处理;并进一步简化了断续拨号音的处理方法,从而避免现有技术中收到语音留言的状态通知无法被正确处理的问题。且本发明的EPON系统中基于消息等待事件实现语音留言功能的方法的应用方式简便,实现成本低廉,应用范围广泛。
文档编号H04M7/00GK102629962SQ20121006569
公开日2012年8月8日 申请日期2012年3月13日 优先权日2012年3月13日
发明者徐正伟, 朱志海, 苏海滨 申请人:上海大亚科技有限公司