端末から呼び出します

ターミナルサーバーから呼び出しを行う機能を実現するために、基本的なプログラミングの知識をどのように使用できるかについて、短いメモを公開することにしました。

誰がそれを必要としているのか:まず第一に、ターミナルサーバー(たとえば、Windows 2003)を持っている人々(または組織)には興味深いでしょう。クライアントの連絡先情報が保存されるCRMプログラムがあります。 また、従業員はソフトウェアIP電話を使用します。



持っているもの:ローカルネットワーク、ターミナルサーバー自体[Windows 2003 Standart]、IPテレフォニーサーバー[アスタリスク]、IPベースの電話がインストールされたクライアントマシン[Windows XP] [X-lite]。

一般的なアイデア:ターミナルサーバー[以下TS]には、特定のプログラム[クライアント部分]が必要です。 次に、KCH]。VasilyPupkinのIPアドレスを決定します[すべてのVPに不快感を与えないようにしてください:)]。 特定のサーバープログラムがVasilyのコンピューターでハングし、ポート[以下MF]でリッスンします。 問題が発生します-サーバーにMFがあり、クライアントマシンにMFがあるのはなぜですか? 問題は、サーバー上でプログラムがポートをリッスンせず、クライアントマシンに「接続」し、呼び出しに必要な番号を送信することです。



この問題を解決するために、 AutoIt3と小さなGETTSCIPプログラムを使用し、コンソールを介して端末でIPを取得します[必要なもの]



1.ミッドレンジを作成します[クライアントマシンに配置されます]。 前に言ったように、プログラムはポート(この例では65532)でリッスンします。 データが到着すると、特定のタイトルのウィンドウを検索します[X-lite。 他のIP電話の場合は、AutoItに標準装備されているAutoit Window Infoを使用し、IP電話をアクティブにし、受信した番号を送信し、IP電話に入力してEnterキーを押します。 サンプルスクリプト:



Local $szServerPC = @ComputerName

Local $szIPADDRESS = TCPNameToIP($szServerPC)

$socket = UDPBind($szIPADDRESS, 65532)

If @error <> 0 Then Exit

While 1

$data = UDPRecv($socket, 50)

If $data <> "" Then

WinActivate("XLite")

Send($data & "{enter}")

EndIf

sleep(100)

WEnd

Func OnAutoItExit()

UDPCloseSocket($socket)

UDPShutdown()

EndFunc








2. KCHを作成します[ターミナルサーバー上に配置します]。 そのため、パラメーターとして電話番号を指定します。 これにより、たとえば1Cを呼び出すためのボタンを挿入できます(たとえば、CRMで)。 次に、インバーターは、クライアントが端末に入ったIPアドレスを判別します。 UDPを介して電話番号を送信します。 したがって、この時点で従業員はミッドレンジがトリガーされ、コールが発生します。 サンプルスクリプト[getmyip.exeという名前のGETTSCIPプログラムをシステムディレクトリに事前コピー]:



if($CmdLine[0]==1) then

Local $foo = Run(@ComSpec & " /c getmyip", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

Local $line

Local $ip

While 1

$line = StdoutRead($foo)

If @error Then ExitLoop

if $line<>'' then

$ip=$line

EndIf

Wend

$ip=StringReplace($ip,"WTSClientAddress: ","");

$socket = UDPOpen($ip, 65532)

If @error <> 0 Then Exit

$status = UDPSend($socket, $CmdLine[1])

If $status = 0 then

MsgBox(0, "ERROR", "Error while sending UDP message: " & @error)

Exit

EndIf

EndIf

Func OnAutoItExit()

UDPCloseSocket($socket)

UDPShutdown()

EndFunc








それだけです。 これで、プログラムの2番目の部分を実行する1Cまたは別のプログラムの車両にボタンを配置できます。そのパラメーターは電話番号です。

クライアント、Xlite用サーバー、getmyipは、 こちらのアーカイブからダウンロードできます



All Articles