首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cisco JTAPI到CUCM

Cisco JTAPI到CUCM
EN

Stack Overflow用户
提问于 2013-01-08 21:47:43
回答 2查看 4K关注 0票数 3

我的任务是编写一个应用程序,让用户向Cisco Unified Callmanager 8.6发出呼叫。UCM不会提供联系人列表。它将在其他地方提供。

我发现思科提供的文档和示例都是缺乏的,也是不可取的。我也发现缺乏来自第三方的工作示例。

我希望其他人在我之前也做过类似的事情。

应用程序从数据库中获取要呼叫的号码,然后让用户单击他或她想要呼叫的联系人。然后将目的地的号码发送到电话。基本上,应用程序将目的地发送到电话或UCM,而不是必须拨打号码,用户在此时接管。

查看思科的makecall.java,并使用它,使用此API实际发出呼叫似乎很简单。

我已经开始使用在http://blog.nominet.org.uk/tech/2008/01/25/experiments-with-jtapi-part-1-making-a-call/找到的示例,但我认为这段代码不足以发出调用。然而,我可能错了。

有人能在这里给我指出正确的方向吗,因为我相信我的规范很简单,应该很容易实现。如果需要更多信息,我很乐意提供。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-11 22:37:46

我在我的项目中使用了以下代码,工作正常:

代码语言:javascript
复制
            final Condition inService = new Condition();
            provider.addObserver(new ProviderObserver() {
                public void providerChangedEvent(ProvEv[] eventList) {
                    if (eventList == null) {
                        return;
                    }
                    for (int i = 0; i < eventList.length; ++i) {
                        if (eventList[i] instanceof ProvInServiceEv) {
                            inService.set();
                        }
                    }
                }
            });
            inService.waitTrue();
            Address srcAddr = provider.getAddress(src);
            co = new CallObserver() {
                public void callChangedEvent(CallEv[] eventList) {    
                }
            };
            srcAddr.addCallObserver(co);
            call = provider.createCall();
            call.connect(srcAddr.getTerminals()[0], srcAddr, dst);

  • 源-您从
  • 目标电话呼叫到

的电话

票数 3
EN

Stack Overflow用户

发布于 2013-05-10 18:00:19

这已经是几个月前的事了,但它仍然可能会对你有所帮助。我能够创建一个测试场景:

代码语言:javascript
复制
protected CiscoJtapiPeer peer;
protected CiscoProvider provider;
// ...

peer = (CiscoJtapiPeer) JtapiPeerFactory.getJtapiPeer(null);
provider = (CiscoProvider) peer.getProvider(cucmURL);

/* cucmURL has the format:
    "192.168.0.20;login=myuser;passwd=mypasswd"
whereas the username is an Application User in Cisco Unified Communications
Manager. On my system, it has the following permissions. I don't know whether all
of them are required:

Standard AXL Users
Standard Audit Users
Standard CCM End Users
Standard CCM Phone Administration
Standard CCM Phone and Users Administration
Standard CCM Read Only
Standard CCM Super Users
Standard CTI Allow Call Monitoring
Standard CTI Allow Call Park Monitoring
Standard CTI Allow Control of All Devices
Standard CTI Allow Control of Phone supporting Connected Xfer and...
Standard CTI Enabled
Standard CTI Secure Connection
Standard RealtimeAndTraceCollection
Standard TabSyncUser

You then add an observer to the provider in order to know when the provider 
object is read for further interaction. You'll receive a "ProvInServiceEv" Event in the event list.
*/

provider.addObserver(providerObserver);
/* Wait until the event has come up */
// Create a sample call:
CiscoTerminal term = provider.createTerminal("your_sep_id_here");
Call call = provider.createCall();
call.connect(term, term.getAddresses()[0], "your_phone_number_to_call");

term被用作发起调用的“源”。term.getAddresses()[0]只获取与“源”电话关联的第一个电话号码。然后调用"your_phone_number_to_call"

另一个信息:它不能反过来工作:您不能先调用provider.getAddress("phonenumber"),因为不知何故,在任何终端连接到provider类之前,provider类并没有加载电话号码。

这在CUCM 8.6.2和Java 7上进行了测试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14216355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档