0

我在服务台工作,我们使用 SAP Communication Desktop 作为我们的电话软件,但不知道这在行业内有多普遍。

我一直在开发一个 Python 程序,用于自动化重复部分工作(写票,从 ServiceNow 搜索号码等)。当我手动输入数据时,一切正常,但我很想自动化这个过程,只需要 Python fetch呼叫到达时来自 SAP 的信息。电话号码也显示在任务栏附近,我尝试在 Windows 事件查看器中搜索它,但到目前为止一直找不到它。

这可以在 Python 中完成吗?

在此处输入图像描述

伊尔马里

4

1 回答 1

1

您可以使用 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。如果需要,我会详细说明。祝你好运!

于 2018-02-01T10:05:02.680 回答