使用ColdFusion通过TCP/IP流读取事件
我们的新电话系统使用Asterisk manager API,它允许通过TCP/IP流读取事件并发出命令。我的问题是。。是否有任何方法可以使用ColdFusion读取(并依次处理)事件流?现在我可以通过telnet查看电话事件(来电、转接、挂断等),我想知道是否可以使用ColdFusion事件网关来处理这些事件 一旦建立了初始连接(通过telnet),我必须提交以下密钥:值,以便在流开始之前对连接进行身份验证使用ColdFusion通过TCP/IP流读取事件,coldfusion,asterisk,coldfusion-10,Coldfusion,Asterisk,Coldfusion 10,我们的新电话系统使用Asterisk manager API,它允许通过TCP/IP流读取事件并发出命令。我的问题是。。是否有任何方法可以使用ColdFusion读取(并依次处理)事件流?现在我可以通过telnet查看电话事件(来电、转接、挂断等),我想知道是否可以使用ColdFusion事件网关来处理这些事件 一旦建立了初始连接(通过telnet),我必须提交以下密钥:值,以便在流开始之前对连接进行身份验证 Action: login<CRLF> Username: usr<
Action: login<CRLF>
Username: usr<CRLF>
Secret: abc123<CRLF>
<CRLF>
操作:登录
用户名:usr
秘密:abc123
我只是想具体说明一下,因为我不确定这是否是以这种方式使用web服务的交易破坏者。另外请注意,我们使用的是ColdFusion 10 Enterprise。是的——您需要使用套接字网关。Ben Nadel有一本关于如何做到这一点的好书:
尽管他在示例中使用Node.js,但您应该能够使用他的指南设置套接字网关,然后根据需要处理传递给它的数据。您需要的是服务器端TCP客户端。我建议使用一个简单的UDF,它允许您利用Java套接字通过Coldfusion发送TCP消息 我意识到这是一个老帖子,但我现在发布这个帖子,以防对下一个家伙有所帮助 抱歉,这不能用标准的CF事件网关来完成。然而,一种可能性是使用。它是一个java库,允许与Asterisk服务器通信。更具体地说,it经理界面: 。。。能够发送[操作]和接收[响应]以及 [事件]。它没有添加任何进一步的功能,而是 为Asterisk的Manager API提供Java视图(将您从 TCP/IP连接和解析功能) 因此,它可以用来向服务器发出命令,并接收事件,就像telnet一样 初学者示例:
factory = createObject("java", "org.asteriskjava.manager.ManagerConnectionFactory");
connection = factory.init( "hostNameOrIP"
, portNum
, "userName"
, "theSecret" ).createManagerConnection();
component {
public void function onManagerEvent(any managerEvent)
{
// For demo purposes, just output a summary of the event
WriteLog( text=arguments.managerEvent.toString(), file="AsteriskLog" );
}
}
proxyListener = createDynamicProxy("path.YourCFCListener"
, ["org.asteriskjava.manager.ManagerEventListener"]);
connection.addEventListener( proxyListener );
action = createObject("java", "org.asteriskjava.manager.action.PingAction").init();
response = application.connection.sendAction(action);
writeDump(response.getResponse());
// disconnect and stop events
sleep(4000);
connection.logoff();
"Information","http-bio-8500-exec-4","10/14/16","15:17:19","XXXXX","org.asteriskjava.manager.event.ConnectEvent[dateReceived=Fri Oct 14 15:17:19 CDT 2016,....]"
结束,以停止事件流。我不确定,但我认为ColdFusion事件网关不能这样使用。他们是听众。我认为他们无法建立联系。您可能可以使用
cfexecute
在服务器上调用telnet。Miguel,是的,我非常确定我可以使用cfexecute,但不幸的是连接无法保持打开状态以读取/处理流。但是ColdFusion网关是那篇文章中的侦听器。Node.js启动与ColdFusion服务器的通信。ColdFusion网关将如何启动与电话系统的telnet通信?啊,显然我误解了你的问题。我以为你希望CF处理请求,而不是发送请求。是的,我确实看到了Ben的文章,并开始使用他的演示创建一个粗略的脚本,直到我也意识到它是用于监听应用程序。
"Information","http-bio-8500-exec-4","10/14/16","15:17:19","XXXXX","org.asteriskjava.manager.event.ConnectEvent[dateReceived=Fri Oct 14 15:17:19 CDT 2016,....]"