About Me

我的相片
台北市, Taiwan
我是方選,
方白科技(finebind tech.)共同創辦人,
臺大資管所畢,
希望能幫助更多的人!

FB: http://fb.com/function1122
LINE: http://bit.ly/1foeZft (手機開啟點擊網址自動加入)

最新15則讀者回應

最新文章

FUNction's 上課筆記

Label Cloud

Blog Archive

FeedBurner

追蹤者

UCMA Simple Bot (國人自製) Part 1

FUNction 於 2008年1月18日 上午11:09 發表
國人就是我...
自從那個死老外沒有回應我之後
國人仍然不放棄,結合IDKStudioServerInteractiveBot 研發出超級輕巧的機器人MOSSAgent
這個機器人目的是打算能與MOSS 溝通(目前沒有實做這個部分,只有機器人對話的功能)
機器人的功能有:
  • 自動接受Communicator 邀請
  • 能回應使用者自Communicator 發出的文字訊息
  • 能接受兩個以上的使用者

機器人的改進有:
  • 重要部分的程式碼採用中文註解!!!
  • 自動抓取Tls憑證(IDKStudioServer無)
  • 能調整上線狀態(IDKStudioServer與InteractiveBot均無)
  • 只要簡單設定機器人就可以使用(依環境更改Settings.xml)

以下截取部分機器人畫面:

從Communicator 用戶端與機器人對話截圖(可以發現機器人對話模式與我很像><)
機器人介面,畫面中可以控制機器人登入,也可檢視機器人收到的訊息


只要編輯Settings.xml 就可以設定機器人
這個地方我們會發現,讓機器人登入不需要設定使用者的密碼,不要懷疑也不要害怕,這是因為我在程式碼建立endpoint 的時候就寫成不需要密碼(因為寫"需要密碼"會有例外Orz)


這是他接收訊息的程式碼,用個很簡單的switch 判斷使用者輸入的字義:P

看了這麼多,如果你是開發者的話應該最有興趣的是下載的連結,我不是一個小氣的人,就放在這兒囉
[download source code]

如果:
  • 你覺得這個程式對你有幫助,請你回復一下讓我知道喔^^(如果都沒回覆我下次就不放source 了Q__Q)
  • 有什麼問題也可以問我,因為這程式我大部分都看得懂(雖然是我寫的:P)
Tags: , ,

讀者回應 ( 18 意見 )

目前還在突破開啟右邊Extention Conversation Window(InteractiveBot 有這個功能,可惜不能發送邀請Orz,要改登錄檔),但是我在網路上仍無法找到相關資源
我只發現一個關鍵性的XML Schema:

<associatedData
xmlns="http://schemas.microsoft.com/LCS/2007/04/CallAssociatedData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.microsoft.com/LCS/2007/04/CallAssociatedData">
<associatedDataElement id="{0}" purpose="CWurl">
<urlToHost>linkurl</urlToHost>
<closeWithWindow>
false
</closeWithWindow>
</associatedDataElement>
</associatedData>

Thank you!!
It is helpful to me :)

目前正在撰寫這方面的程式,因此參考到您的blog. source code下載的連結好像錯了說~

可以請您提供嗎? 感激不盡!!

To Ted:
收先要謝謝您的關注,連結是我故意拿掉的,因為後來我擔心公司的保密條款...
其實我是很喜歡分享的,若您在機器人開發上有任何問題,我能力範圍內,很樂意回答您,不管是透過Blog 留言,或是E-Mail(function1122 G郵件)、IM。
如果要從頭開發,我建議拿IDKStudioServer 的Part 15 (Server)為底開始修改,之後您也許會遇到presence 的問題,可以參考Re: UCMA Interactivebot example
恩...IDKStudioServer 裝之前要先安裝UCMA SDK,裝完之後就可以用了。OCS 預設走MTLS 連線,所以IDKStudioServer 要先在option 選擇你在OCS 上的使用者,例如:sip:administrator@msft.com 還有OCS主機的完整名稱,例如ocs2007.msft.com,以及勾選TLS 即選擇適當憑證,就可以用啦!!

您好,

我目前正在學習UCMA,您的文章對我很有幫助,不知可否跟你要UCMA Simple Bot Part1的Source Code,如果可以的話請寄到
cming168@ms68.hinet.net。謝謝您。

To chming:
謝謝你的留言,你的回饋也給我很大的鼓勵。我不知道你開發上遇到了什麼問題,是否方便在這裡提出,或寄Mail 問我,我們可以一起想辦法解決。
如果真的不能解決,再考慮寄程式碼給你,我覺得現在寄程式碼不是個負責任的行為,寄了不代表你的問題能被解決,而且這個問題也許是大家的問題,何不提出一次讓大家共享解決方法:-)

PS. 很抱歉,最近正逢期中考,所以回復速度較慢Orz

FUNction 您好,
謝謝您的回覆,我現在遇到的問題是執行InteractiveBot範例時,client也可以看到Bot上線,但是client送訊息給Bot時,InteractiveBot service就死掉了。trace log訊息如下:
D/17:19:58.812 Flat file logging turned on
D/17:19:59.078 Registering
D/17:19:59.125 Interactive Bot registration state transitioned from Unregistered to Registering for the following reason None
D/17:19:59.250 Core Initialized
D/17:19:59.593 Interactive Bot registration state transitioned from Registering to Registered for the following reason None
D/17:19:59.656 SetupContainer Complete Exception: The requested operation failed.
SetupContainer Complete Exception: The requested operation failed.
D/17:20:36.875 New call from sip:chming@office.idv.tw To sip:ocs5@office.idv.tw with Req-URI sip:adocs.office.idv.tw:4382;transport=Tls;ms-opaque=423047cb1c85fb51
不知您是否有遇到過相同的問題?
我程式是在OCS主機上執行的。

謝謝!

Chming

To Chming:
我也有曾經在一丟訊息就死掉過,我的死掉是會跳回VS,說我某某行有錯,不知道你是不是一樣。我記得那時候是因為改程式真的有錯...在接到session 的部分,session 的建構子有例外。

一開始我真的覺得拿IDK 來改比較好,因為IDK 程式簡單,很容易弄懂機器人的啟動流程,Interactive Bot 夾著太多不需要用到的東西,你先try 看看這能不能接到訊息吧
[老外的IDK Part 15 範例(.zip)]

測試Server 的,之後想要回話就參考Interactive Bot 的SendMessage() copy 程式加到Session.cs 那支,慢的話兩小時可以搞定。

Hi Function,

真是感謝您提供的資料,我現在在ocs server可正常執行IDK Part15,可收到訊息。後來發現Joe Calev weblog有一篇Creating bots using UCMA - Part I (from TechEd)的文章,裡面新增了回覆和alert的功能,經測試運作正常,目前開始了解如何運作中。另外在您的blog中有提到取得用戶名稱的方式,想請問要取得用戶的詳細資訊(如姓名/電話/地址),是否要直接連ad取得資訊,還是透過ucma即可呢? 謝謝!

Hi,
我這邊有一個狀況,就是IDKStudioServer開始執行時都正常,communicator送資料,可以回應資料,但是經過一段時間後,它不知是死掉還是斷線,當使用communicator送資料給它時,都會出現訊息未送達的訊息,error ID:504,然後重新啟動IDKStudioServer就又恢復正常了,不知你是否有遇過此問題?
謝謝!

chming

To Chming:
沒錯!! 我也會這樣,而且算過...你指的一段時間大概是5分鐘,超過5分鐘就會爆掉。

我們猜測是因為機器人太就沒有跟OCS 傳訊息,所以OCS Srever 把他「怎麼了」。目前想到的解決方法是寫一個timer ,每隔5 分鐘送一個改變presence 的訊息,讓OCS 知到機器人還在。

但是這方法我們這邊還沒試過,不知道有沒有效,等你的好消息。

PS. OCS Server 會偵測client ,預設是閒置15 分鐘會把presence 改成「離開」

嗯 大概就是5分鐘沒錯,
那我就來試看看,有結果在跟你說~
謝囉!

Hi Funcation,

我將Interactive Bot的PublishPresenceState()複製到IDKStudioServer,並使用timer每一分鐘執行PublishPresenceState一次,
狀態皆設為PresenceState.Online,結果還是一樣,測試實際時間約為8分鐘後斷線。後來我有將Interactive Bot的RegistrationStateChanged()也複製到IDKStudioServer,發現也是在那個時間程式會自己執行那段函式,看來是有RegistrationStateChanged event發生,程式顯示的訊息是"registration state transitioned from Registered to Registered for the following reason RegisterationRefresh"。但是我這邊如果去執行Interactive Bot,Client連上去 Bot就會死掉,但是奇怪的是,我執行Bot後10分鐘再去連,還是可以連上,然後Bot才死掉,感覺Interactive Bot好像沒有8分鐘後斷線的問題。我也試過Client連上IDKStudioServer,然後一直送訊息,但是分鐘後還是一樣出現"訊息未送達"的錯誤訊息。不知Function這邊是否有什麼想法或建議,我弄了好久還是沒有進展 >_<

謝謝!

Chming

我剛剛又測了Interactive Bot,使用TCP的方式連線,就可正常運作,不會死掉。然後我發現Interactive Bot不會有8分鐘後就連不上的問題,不過還是不知Interactive Bot做了什麼事?

To Chming:
謝謝你的寶貴資訊,我星期四也會再測!! 如果有什麼撇步我也會分享上來XD

OCS能作呼叫中心吗?
我才接触OCS,想用她来作呼叫中心,不知大家对此有何看法。

那有用OCS作呼叫中心的案例吗?如果有,能给个链接我去看看吗,想参考一下别人的经验。

OCS是将来电者的来电号码,时间,以及录音全存在对应的sql server表中吗?如果这样,那用来建呼叫中心,简直太棒了。
如果不是这样的,那想取这些数据,有什么好办法吗 ?

可以在后台自动记录通话录音吗


还有,我想搭个实验环境,不知道media gateway ,怎么选择,比较便宜些。就买板卡可以吗?

谢谢

BTW:如果大家有这方面的电子书,诚请共享一下。我只在MS站上下了一些文档。

你好,刚准备深入研究UCMA消息机器人。发现你blog写的最详细了。看到还是提供了,源码,但是我点击下载好像不是下载地址阿?
是不是已经给你删了阿?
刚开始做这个开发,有很多地方不懂,希望能指导一下。我的MSN:linweifu#live.cn
希望能向你多多学习这方面知识。

你好,我想实现bot 的主动发信息,而不是客户端发一条,bot回一条。请问具体是怎么做到呢?我的msn是susan198579_10@163.com

張貼留言

如果沒有帳戶,建議使用「名稱/網址」留言喔^^