2017-10-27 5 views
0

私はヘルプデスクで働き、私たちは電話ソフトとしてSAPコミュニケーションデスクトップを使用しています。私は自分の仕事の繰り返し部分を自動化するためのPythonプログラムを開発しています(チケットの作成、ServiceNowからの番号の検索など)。手動でデータを入力するとすべてうまく動作しますが、プロセスを自動化してPythonをフェッチしますコールが到着したときのSAPからの情報電話番号はタスクバーの近くにも表示されていますが、Windowsイベントビューアの検索を試みましたが、これまで見つけられませんでした。PythonでSAP CDTから着信番号を取得するにはどうすればよいですか?

これはPythonで可能ですか?

enter image description here

イルマリは

答えて

0

あなたは、SAPのOnline Interaction Interface (OII)を利用することができます。

クライアントアプリケーション(CDTなど)がBCMとやりとりする(APIコールなど)APIです。

クライアントにOIIへの接続を依頼し、回線番号を指定してIciContainerInterfaceサブスクリプション要求を送信します。

OIIは、回線番号に関連するすべての通話に関する情報(電話番号など)を含むイベントをアプリに送信します。

手順

あなたOIIからWSDLをダウンロード:

ます。http:// IPアドレス /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を使用しています。私は必要に応じて詳しく説明します。がんばろう!

関連する問題