java jtapi_JTAPI 入门 (二)

CallObserver

○ Call 事件侦听接口,实现此接口。我们可以侦听到 Call 所发出的所有事件。在实际开发中,必须要实现此接口,或者其子接口。因为,这是介入进行处理操作的基础。

ConnAlertingEv  : 这是振铃事件

ConnDisconnectedEv : 这是挂机事件

ConnFailedEv : 这是拨号失败的事件,使用这个事件,可以在拨号失败之后处理后事。。      ○ Call Control Extension 扩展接口: CallControlCallObserver   --- 在实际开发当中,我们会实现这个接口,而不是 CallObserver 。因为可以得到更完整的事件。

CallCtlConnAlertingEv: 振铃事件。。要注意,CallObserver 虽然也有 ConnAlertingEv ,但是这个事件能够得到更多的状态和数据信息,自然也就更好。

CallCtlConnDisconnectedEv: 这是挂机事件。。。不过,如果不需要更多信息,用 ConnDisconnectedEv 可以少输入几个字母。。^-^

CallCtlConnDialingEv: 就是按键输入事件,可以使用方法 getDigits() 来获取输入的按键。这是一次性的获取,有时不是很靠谱,所以在用时,最好先试一下好不好使。

在 Cisco JTAPI 中,提供另外的一些事件来处理按键,在后面有说

CallCtlConnEstalishedEv: 拿起话筒事件。。。这个事件,在一些处理中非常有用。不过,由于拨号双方都会拿起话筒,所以会有两个这样的事件,在用时要分清楚。

CallCtlConnOfferedEv:  在使用 Cisco CTI Port 和 CTI RoutePoint 这样的逻辑话机时,就要在这个事件进行 accept 操作。

.... 更多

Terminal

○ 表示一个终端设备,包括逻辑终端和物理终端。如物理话机,SoftPhone,手机。。甚至对讲机等

○ 主要方法包括:

addObserver() : 添加 Terminal 层面的事件侦听器

addCallObserver() : 添加  Call 事件侦听器 (见 CallObserver)

getAddresses() : 获取此话机的所有 Address (即号码对象),一台可用话机,通常会有一或多个号码

getName():话机的唯一名称,在 Cisco 中。物理话机通常是一个 MAC 地址,而在逻辑话机,会是一个由字母数字组成的名称。

getProvider() : 获取 Provider

○ Cisco 实现类: CiscoTerminal   --- 同样将提供更多丰富的功能

getIPV4Address() : 获得 Terminal 的 IP 地址。。。这个地址也可以通过 AXL API 获取

pickup():呼叫代答

sendData() : 推送信息到 Phone 中显示,可以用来推送一些即时提示信息

○ Cisco 的虚拟逻辑话机: CtiPort   -- 可以作为一台物理话机使用

◆ 是 CCM 内部的一台虚拟话机

◆ 每个 CtiPort 只能起一个 Call

◆ 通常用来播放语音提示。例如,控制一个 CtiPort 拨打某个指定号码,然后播放一段已经录制好的语音。

◆ CtiPort 对应的类: CiscoMediaTerminal

register() : 注册使用 CtiPort  --- 要指定语音编码协议等

setRTPParams() : 设置 RTP 语音流的参数(如端口等)

○ Cisco 虚拟逻辑总机:  Cti RoutePoint   --- 可以作为一台总机使用,同时接入多个呼叫请求

◆ 是 CCM 内部的虚拟话机

◆ 能够并发接入多路呼叫。。。CCM 8.x 以上,每个 CTI RoutePoint 可以并发接入多达 4 千个呼叫 (服务器物理性能允许的情况下)

◆ 可以实现语音呼叫处理逻辑。。。例如,简单的 Call Center 的语音流程。。实际上 Cisco Call Center Server 就是使用 CTI RoutePoint 来实现语音流程

◆ Cti RoutePoint 对应的类: CiscoRouteTerminal

register() : 注册使用 CtiPort  --- 要指定语音编码协议等

setRTPParams() : 设置 RTP 语音流的参数(如端口等)         ◆  在方法提供上,似乎没什么特别之外,其他差异是在事件处理上。当使用 accept 接入时,呼叫将进入一个内部队列,排队等待处理。所以 RoutePoint 能够处理多个呼叫。

TerminalObserver

○ Terminal 层面的事件侦听接口。。能够接收到 Terminal 层面的事件,例如语音流方面。不过,由于 Terminal 与底层实现的相关性较强,所以标准并没有太多内容

○ Cisco 实现类: CiscoTermEv     --- Cisco 提供了比较多的底层事件支持,并且如果要使用 CTIPort 或 CTI RoutePoint 的话,就必须用到这些事件。

CiscoMediaOpenLogicalChannelEv :   为 CTIPort 或 CTI RoutePoint 设置语音参数,例如  RTP URL ( IP + 端口号)

CiscoRTPInputStartedEv : 开始接收对方的语音输入(语音流),在本事件中,可以得到 RTP URL,这样我们可以将语音流定向到其他目地的,例如文件。

CiscoRTPInputStoppedEv: 停止语音输入事件,可能是挂机,又或者转接,会议之类的操作,停止了语音输入。

CiscoRTPOutputStartedEv: 开始向对方输出语音流

CiscoRTPOutputStoppedEv: 停止向对方输出语音流。

在使用上述事件时,要留意: CiscoRTPInputStartedEv 与 CiscoRTPOutputStartedEv 的触发,并没有顺序。也就是,不要假设顺序。

Connection

○ Connection 是连接 Call 与 Address 的连接对象。

disconnect() : 断开连接,相当于挂机

getCall(): 获得所关联的 Call

getAddress(): 获得所关联的 Address

○ Call Control Extension 扩展:  CallControlConnection  --- 提供更多的方法

accept(): 接入来电。对于一些特殊的 Terminal 有特定的用途。例如 Cisco CTIPort & CTI RoutePoint ,就必须明确使用本方法来接入来电。当然,新版本

的 Cisco CCM (如 8.x 之后),可以在 CCM 配置层面,进行 auto accept 操作。不过,编程的灵活性就没了。

reject():  拒绝接入来电。

redirect() : 重定向到另一个地址。。。例如,判断是某些特定的号码,然后转向到另一些号码(类似号码自动分派)

○ Cisco 的扩展: CiscoConnection

CiscoConnection 是对 CallControlConnection 进行扩展。最重要的功能,就是提供更丰富 redirect() 方法功能,例如配合 CCM 中 CSS 进行更加细致的分隔和重定向

也就是说,可以制定更加丰富和复杂的呼叫路由。

TerminalConnection

○ TerminalConnection 是连接 Connection 与 Terminal 的连接对象。意味着 TerminalConnection 不能单独存在,必须依附于 Connection

answer():  接听来电。特别是对于 Cisco CTIPort & CTI RoutePoint 这样的逻辑话机,必须使用本方法来接听来电。

getTerminal(): 获取关联的 Terminal

getConnection() : 获取关联的 Connection

○ Call Control Extension 扩展: CallControlTerminalConnection

hold(): 暂时  “hold”住通话

○ Cisco 的扩展/实现:  CiscoTerminalConnection ---提供一些较底层或特有的方法,例如:  startRecording() 。。启动 Cisco CCM 的 BIB 方式录音功能。

2.4 开发过程常用事件

由于我们要靠事件来介入整个呼叫流程,所以了解和研究事件,就成为开发学习的主要任务。如果不清楚有那些事件,在某个阶段会触发那些事件,那就意味着你什么也做不了。下面列出开发常用事件,以供参考:

4dbcf0a565b2dea60383c1ef34270d57.png

如果是 Cisco CTi Port & CTI RoutePoint 的编程,用到的事件还会多。例如: CallCtlConnOfferedEv 事件,我们的 CTI Port & CTI RoutePoint 必须在这个事件中进行一个 accept() 动作,用来接受拨打入来的电话,否则对方就无法拨入而听到忙音。

(待续...)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值