開篇,忍不住親切地問候一下錢伯斯他大爺!
Tip:這篇日誌沒有連續性,都是隨筆,不存在任何的上下文關聯。
Cisco在IP Phone對XML Service的支持上明顯有某種目的,SCCP固件的電話對XML支持的是最好的,完全符合SDK 4.1的標準。
而手工刷成SIP固件的電話,就要看電話機的型號了。新型的可能支持的還好些,舊型號就很糟糕了。應該是還停留在SDK 3的時代。
我手裡有兩台CP7960,只不過一台刷了SIP,另一台是SCCP,二者固件版本均為最新。
在開發程序的時候,還要不斷地協調這兩台電話的瀏覽器對於xml兼容的問題,真是要害死人了呢!
關於SDK的差異,顯而易見,比如缺少對SoftKey的支持,這個太鬧心了。不過可以使用MenuItem來替代一下,也算是一個不是辦法的辦法。
其他的,說一些隱性的問題。在做MenuItem的時候,URL帶參數。在SIP話機上,這個參數千萬不要是“id”。我懷疑這是一個保留字?總之帶了這個參數的URL,肯定會被在那個?之前被截斷,參數根本別想發到服務器。不過,在SCCP話機上卻完全沒有這個問題。
再有就是MenuItem不支持回車符號啦之類的,反正Cisco很明顯就是在限制SIP話機的功能,逼著大家都去爽CUCM!
再一點,就是沒有CUCM的情況下,不容易判斷話機的身份。其實這個也不是太困難,話機在訪問XML Service首頁的時候,會把自己的序列號SEPXXXXXXXXXXXX(X是MAC地址),以頁面參數的形式發送給服務器。服務器在處理頁面的時候留意一下這個querystring,就可以知道是哪台話機在請求服務了。
不過請求XML Service首頁之外的其他頁面就不會有這個參數了。參數傳遞沒必要非得用cookies,直接用querystring傳參。
============================================
上面说了,Cisco IP话机访问XML Service的首页时,会把自己的串号以name这个querystring提交上去,但是如果从XML Service中的其他页面,通过某些元素(MenuItem或者Softkey)回到XML Service的首页,则不会带有name这个querystring,因此如果需要传递参数,需要手工添加。
============================================
另外,SCCP的话机对于长字串的支持显然是没有SIP的好,不知这又是为何??
比如,在MenuItem中,尽管SIP的话机不支持换行符,但是可以显示很多的内容(我尚未严格测试,不过显示三行是可行的);而SCCP话机如果显示超出两行,就会报XML错误。
再者就是输入文字的时候,SCCP话机仅能输入32个字(比老式的手机短讯还少耶),而SIP话机能输入更多的字符(未经严格测试,不过50个字符还是没问题的)。
针对这些差异,今天不得不又把程序调整了一下,以针对不同话机提供更合适的服务。