[英]How to retrieve incoming call number from SAP CDT in Python?
您可以使用 SAP 的在线交互界面 (OII) 。
它是一个 API,允许客户端应用程序(例如 CDT)与 BCM 交互(进行调用等)。
让您的客户端连接到 OII 并通过给它您的行号来发送 IciContainerInterface 订阅请求。
然后,OII 会将包含与您的线路号码相关的每个电话的信息(例如电话号码)的事件发送到您的应用程序。
从您的 OII 下载 WSDL:
http:// ip-address /OII/IciItemService.asmx?WSDL
使用 WSDL 生成 OII 类
获取OII连接实例:
private Optional<IciContainerServiceSoap> getContainerPort() {
return containerSubscriber.map(s -> {
IciContainerServiceSoap port = s.getIciContainerServiceSoap12();
BindingProvider binding = (BindingProvider) port;
binding.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
createServerUrl(s.getServiceName().getLocalPart(), serverAddress, serverPort));
return port;
});
}
public static String createServerUrl(@NotNull String localPart, @NotNull String serverAddress, int port) {
StringBuilder sb = new StringBuilder();
sb.append("http://");
sb.append(serverAddress);
if (port == 0) port = 80;
if (port != 80) {
sb.append(":");
sb.append(String.valueOf(port));
}
sb.append("/oii/");
sb.append(localPart);
sb.append(".asmx");
return sb.toString();
}
/*
* Address and port on which your client app's webservice will be
* listening for events sent by OII.
*/
public static String createAppURL() throws UnknownHostException {
//
Example: http://xxx.xxx.xxx.xxx:7007/sapws/services/cct?wsdl
return "http://" + getHostName() + ":" + getListenPort() + "/sapws/services?wsdl";
}
发送订阅请求:
getContainerPort().map(p -> p.subscribe(appURL, getAppId(), "1", container)).orElseThrow(IllegalStateException::new);
您的应用现在将在 appID (7007) 中指定的端口上以 SOAP 数据包的形式接收PhoneCallChanged事件。
请注意,我使用的是 Java。 如果需要,我会详细说明。 好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.