HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0804
可憐CTI (Computer Telephony Integration)システムの構築12解決


可憐

リンク

2016/8/4(Thu) 01:52:25|NO.76515

お世話になります。
以前下記の投稿にて、レシートの出力に関する質問をさせて頂きました。


http://hsp.tv/play/pforum.php?mode=pastwch&num=71086

その後、無事レシートの発行に成功しました。
この度は、CTI (Computer Telephony Integration) を実装出来れば...と考えております。
CTIとは、【電話がかかってきた際に電話番号からお客さんの情報を検索し、画面に出力する】という機能の事を言います。

レシートの時とは違い、NTTとナンバーディスプレイの契約がいる...とかそれ用の機器が必要...など少し複雑になっておりまして
いろいろ調べましたが結果行き詰っております。。
本来HSPで組むべきなのか・・・と考えましたが、HSPでなんとか組んでみたいなと思っております。
目標はかかってきた電話番号の取得までできればいいなと思ってます。

また、このプログラムを一緒に協力して作って頂ける方も是非レス下さい。
よろしくお願いします。


一応、参考になりそうな資料を数ある中からまとめてみました。

【参考サイト】

http://www.fullfree.jp/i/cti/ http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=61236;id=excel http://www.999.co.jp/pdf/usbcid4-jp_miniusb.pdf http://gihyo.jp/dev/column/01/prog/2009/051301?page=2

【実際に動作している映像】

https://www.youtube.com/watch?v=GvjRlLxoPxk&feature=youtu.be



この記事に返信する


Cheesehamburg7273

リンク

2016/8/4(Thu) 09:04:02|NO.76518

CTIのことはよくわかりませんが
なぜHSPで実装する必要があるのでしょうか
C言語などで作ったほうが高機能で良いと思いますが



SquidSky

リンク

2016/8/4(Thu) 11:59:42|NO.76522

この言語、ビジネス用ソフトを作れるような高級言語ではないので
他の言語で作られてみては?
あくまでもこれは"家庭用"です。



cats

リンク

2016/8/4(Thu) 14:20:10|NO.76525

当方電話機については全く知らないのですが、質問者様のサイトでいろいろ調べました。
とりあえずナンバーディスプレイアダプタは電話機、ADSLポート(等)、パソコンと
それぞれUSBポートやモデムポート等を介して中継するみたいです。
で、パソコンの方にはCOMポートでシリアル通信を用いてデータが送られてきます。
HSPでもCOMポートは使えるはずなので、シリアル通信に使われるプロトコルに合わせて
送られてきたデータを処理してやれば電話番号が取得できると思います。
(このプロトコルについてはどんな構造か知りません。)
電話機側はナンバーディスプレイに対応している必要はあるみたいです。



SquidSky

リンク

2016/8/4(Thu) 14:46:13|NO.76526

今の電話機であれば、99パーセントナンバーディスプレイに対応しているから
大丈夫だと思います。旧式でも、恐らく2000年以降であれば使えるはず。



掘木

リンク

2016/8/4(Thu) 20:53:09|NO.76527

COMポートでの通信ですか。最近やってみた感じなんかさっくり動きますよ。
http://www.salutesound.com/~oss_winapi232.html
C++の資料。

HSPで組む場合、構造体の情報なんかを引っ張ってくるのが大変なんですよ。
なお、以下テストをまともにしてないので動作は未保証。動かなかったら適当に直してねん。

#module MComPort PortHandle #uselib "kernel32.dll" #cfunc CreateFile "CreateFileA" str,int,int,sptr,int,int,sptr #func GetCommState "GetCommState" int,sptr #func SetCommState "SetCommState" int,sptr #func ClearCommError "ClearCommError" int,sptr,sptr #func ReadFile "ReadFile" int,sptr,int,sptr,sptr #func CloseHandle "CloseHandle" int #ifndef NULL #const global NULL 0 #endif #const GENERIC_READ 0x80000000 #const GENERIC_WRITE 0x40000000 #const OPEN_EXISTING 3 #const global NOPARITY 0 // パリティなし #const global ODDPARITY 1 // 奇数パリティ #const global EVENPARITY 2 // 偶数パリティ #const global MARKPARITY 3 // Markパリティ #const global SPACEPARITY 4 // スペースパリティ #const global ONESTOPBIT 0 #const global ONE5STOPBITS 1 #const global TWOSTOPBITS 2 #modinit int comPortNumber PortHandle = CreateFile(strf("\\\\.\\COM%d",comPortNumber),GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL ) return #modcfunc MComPort_FailedInit return PortHandle & 0x80000000 #modfunc MComPort_SetPortDCB int baudRate,int byteSize,int parity,int stopBits,local dcb dim dcb,7 // sizeof(DCB) == 28 dcb.0 = 28 // DCBlength GetCommState PortHandle,varptr(dcb) lpoke dcb, 4,baudRate // BaudRate poke dcb,18,byteSize // ByteSize poke dcb,19,parity // Parity poke dcb,20,stopBits // StopBits SetCommState PortHandle,varptr(dcb) return #modfunc MComPort_SetEOFChar int eofChar,local dcb dim dcb,7 // sizeof(DCB) == 28 dcb.0 = 28 // DCBlength GetCommState PortHandle,varptr(dcb) poke dcb,24,eofChar // EOFChar SetCommState PortHandle,varptr(dcb) return #modfunc MComPort_RecvData var dataMemory,int recvSize,local recvedSize dim recvedSize ReadFile PortHandle,varptr(dataMemory),recvSize,varptr(recvedSize),NULL return recvedSize #modcfunc MComPort_RecvedEofChar local dwer,local comstat dim comstat,3 // sizeof(COMSTAT) == 12 dim dwer,1 ClearCommError PortHandle,varptr(dwer),varptr(comstat) return ( comstat.0 & ( 1<<5 ) ) != 0 #modcfunc MComPort_RecvedSize local dwer,local comstat dim comstat,3 // sizeof(COMSTAT) == 12 dim dwer,1 ClearCommError PortHandle,varptr(dwer),varptr(comstat) return comstat.1 #modterm CloseHandle(PortHandle) return #global mes "START" dimtype com1,vartype("struct") newmod com1,MComPort,1 if MComPort_FailedInit(com1) { mes "failed port open." stop } mes "opened com port." MComPort_SetPortDCB com1,9600,7,EVENPARITY,ONESTOPBIT mes "set 9600bps - 7bit evenParity 1stopBit ." repeat 100 recvsize = MComPort_RecvedSize(com1) if ( recvsize > 0 ){ sdim mem,recvsize MComPort_RecvData mem,recvsize recvedsize = stat mes "Recved "+recvedsize+" Byte ::["+mem+"]" } wait 1 loop delmod com1 mes "END"
とりあえずCOMポートでの通信(受信)ができれば何とかなるんじゃないかね?



可憐

リンク

2016/8/4(Thu) 22:54:12|NO.76528

cats 様
なるほどですねー
外部機器との通信に関しては知識皆無なので色々調べないといけないですねー
今日空いた時間があったのでパソコンとひかり電話ルーターをLANケーブルで接続して
ホームゲートウェイhttp://168.192.0.1/に接続したんですが
問題のアカウントのIDとパスワードを忘れてしまったので動作の確認が取れない状況です。
後日業者に電話してみることにします。


SquidSky 様
自宅の電話はナンバーティスプレイに対応してましたので
なんとかなるかな?と思ってます。

掘木 様
ポートの受信?的な分野に関して知識がないので
ソースと参照先を見たんですが、ちんぷんかんぷんでした。
提示されてるソースが何をしているのかも理解がまだできてないので
もう少し勉強してみます。
ホームゲートウェイのIDとパスワードが分かり、準備が整い次第色々と試してみようと思います。



追記になるのですが
とりあえずかかってきた電話番号だけを取得するだけでしたら必要なものは

1. ひかり電話の契約
2. ひかり電話ルーターとLANケーブルを繋ぐ
3. パソコンとルーターをLANケーブルに繋ぐ
4. ホームゲートウェイのIDとパスワードが分かっている状況

だけで良いと思うんですが、合ってるんでしょうか・・・。
外部機器を扱うのは本当に難しい・・・。

また、何か進展がありましたら書き込ませて頂きますのでよろしくお願いします。



cats

リンク

2016/8/5(Fri) 00:28:43|NO.76529

資料を読んだ限りではUSB対応ナンバーディスプレイアダプターも
必要だと思うのですが、これは書き忘れですか?
こんなやつです:
http://www.pecs-pc.com/goods5.html
上記リンクにパソコン、電話機との接続方法みたいな図があるので
参考になるかもしれません。
あと、同じリンク先には電話機のナンバーディスプレイ機能を
OFFにするように書いてありました。



SquidSky

リンク

2016/8/5(Fri) 08:35:13|NO.76530

インターネット電話ではダメなんでしょうか?
Skypeとか。ひかり電話もIP電話だから対応しているかと。



(´ω`)

リンク

2016/8/16(Tue) 12:53:12|NO.76618

>この言語、ビジネス用ソフトを作れるような高級言語ではない

これでネットワーク対応POSを作って現在十数店舗で運用中ですが。( ゚ω゚ )

欠点もあるけれど、様々な方々の協力により、現在のHSPはほんとに色んなことが
できるモノになってると思いますよ。以上、可憐さんへのエールでした。



可憐

リンク

2016/8/18(Thu) 16:20:51|NO.76632

会社の端末から失礼します。

> cats様

ナンバーディスプレイアダプターの事ですね
記載のURLのナンバーディスプレイアダプターの型番は【USBCID3-JP】
ですが、色々調べた所、【USBCID3-JP】より【アロハシリーズ】の方が
安く販売されていのでこれでも電話番号取得できないかなと思ったんですが
基本は一緒だと考えても宜しいのでしょうか...

『アロハND6 仕様説明』

http://www.nikko-ew.co.jp/cti/nd6.html

皆さんの意見を聞かせて頂ければアロハの方を購入しようと思います。

> (´ω`)様

ネットワーク対応POS...流石です!
レシートプリントの件ではお世話になりました。
今回のCTIシステム構築の方が色々と大変そうです(⌒-⌒; )
ですが、なんとかHSPで頑張ってみたいですね!
何か分かることがありましたら教えて頂ければと思います!



可憐

リンク

2016/8/19(Fri) 15:20:18|NO.76653

昨日に引き続き連投失礼します。
色々ネットで情報を探っているとどこを見てもNTT光電話
としか書かれておらず、自宅の通信会社はmegaeggの光電話なのです...

megaegg光電話でも対応するのかと調べたものの、megaeggは中国地方の一部でしか使われておらず
アロハND6の販売業者にお問い合わせするもmegaeggの事すらご存知ない様子。

なので、とりあえず買ってみて動作確認をしようと思います。
また何か進展がありましたら書き込ませて頂きます(^ ^)



可憐

リンク

2016/8/21(Sun) 20:49:10|NO.76692

外出先から失礼します。
2日前にアロハND6を購入しまして説明書を読みながらなんとか電話番号の取得に成功しました!
COMの通信に関しては今まで触れたことのない部分でしたので勉強になりました。

堀木さんのプログラムは53行目か54行目で
内部エラー36 モジュール変数の指定が無効ですと出てきました。

色々調べてcomputなどで、COMポートから送られてきた値を無事取得することが出来ました。

解答して下さった皆さまありがとうございました。


http://www.fastpic.jp/images.php?file=5361834278.jpeg



ONION software Copyright 1997-2023(c) All rights reserved.