本組承接104年台南市政府工務局工程管理資訊系統,其中有一項需求是建置類似Line的即時通訊App功能,而針對此項功能,其無法直接引用市面已有的Line App 的原因有三,首先是基於安全理由,即時通訊主機必須建置在工務局機房中,如此配合通訊加密,無疑可將資訊做最完善保護及管理。其次,通訊內容並不像Line單純只是兩人間的溝通,是有公務性質,資料必須要留存運用統計等後續作業,所以必須要建置自己的通訊資料庫。第三點,通訊功能有客製化需求,如群組等都以各單位為限及人員位置追蹤等Line並無提供的功能。基於以上三點,是有自行開發建置類似Line通訊App的理由,而本組因緣際會承接此項專案,並圓滿達成任務,客戶使用的反應情況也極良好。有鑑於可能有與台南市政府類似狀況,相同需求的單位應該不少,所以特撰此文分享建置經驗以供參考。
為避免此文的讀者難以理解電腦生澀理論及太專業的電腦語法,本文將先展示此案的成果,然後再說明建置架構過程,最後再略述一下其技術上的重點部分。
首先,如圖一,使用者執行此App後會條列各單位及其成員,此為通訊通話的對象,此部分結合台南市政府員工資料庫,使用者無法任意添加以維安全。
圖一
然後,如圖二,選取你要通訊的對象,選取你要通訊方式,如同Line,此有分『通話』及『傳訊』兩種功能,通話還可分是否有視訊。
圖二
至於通話的功能,如圖三,有靜音擴音等功能,一如Line。而關於傳訊功能除一般文字交談功能外,如圖四,與Line一樣附加傳檔及傳圖片等功能,如圖五,可針對交談的對象,傳送各種可能訊息型式。
圖三
圖四
圖五
除了與Line相同的功能外,系統還擴充Line所沒有的功能,如線上使用者目前地理位置,如圖六,此系統的使用者目前位置可以透過PC端的地圖觀看,並可透過PC版的即時通訊軟體進行通話及傳訊。
圖六
以上即是自製通訊程式取代Line App的概要成果描述,以完成前述安全、自有資料庫及特殊需求的目的,並使這項原本看來似乎頗為困難遙不可及的任務獲得完美的成果,讓Line功能與個別的需求並存,魚與熊掌兼得。
以下接著說明製作過程,使有興趣的讀者能有一參考方向。先談通訊系統硬體架構,如圖七,最左側的SIP SERVER 即是我們要建置的主機,SIP 為 Session Initiation Protocol的縮寫,其是一種通話用的通訊協定,ATA 是一種橋接器可將數位訊號轉類比,簡單說就是除手機互撥免費外,也可撥到一般電話機。PBX是電話交換機,如同一般類比式的電話交換機,PBX用的是網路IP。
圖七
上圖乍看複雜,其實我們要建置的即是最左邊的SIP SERVER,要撰寫的即是SIP SERVER SDK程式,其他都只是硬體。這部分完成後,手機端或PC端只要撰寫與之交談的介面,再加上操作畫面即可,細節不看,好像也不如想像中困難。
上面的架構嚴格說來是『通話』用,我們還有『傳訊』的功能沒講,這部分其實與通話硬體架構完全無關,傳訊走的是一般傳統的網際網路HTTP PORT 80通訊協定,這部份程式實作上其實也是完全類似PC電腦網頁的AP般,所以上硬體架構圖最左邊的主機應該是兩台,一個服務通話,一個服務傳訊,雖然此兩個服務可擺在一台主機中。
最後講一下開發工具供有意建置的讀者參考,首先是開發平台,主機我們用的是Visual Studio,使用VC++ 開發,資料庫使用的是 MS SQL SERVER,『通話』功能用的SDK,因考慮到將來還是有許多狀況需要自行解決,所以仍採自行開發,讀者其實可以採用市面上免費或付費SDK,以加快開發期程。至於通訊主機則因是一般網際網路服務程式,完全可以自行開發,此處省略。
關於手機Android的部份,用的是Eclipse Java,蘋果手機用的是iOS Xcode。
在通訊還有一些技術上的『眉角』,略提一下,如Client端保持不斷線的責任,Server端則一段時間後自動斷線,以防止Client端關機等不正常使用。又如Server端應採『送後不理』,以防止多人使用下整個咬死。諸如此類的防呆防不正常使用的機制,這在此多人複雜使用下非常重要。
Line App 多年來受全球客戶喜愛,其功能堪稱完美,但因其強調方便使用,造成其在某些作業上有安全疑慮,此尤其在公部門的使用上常有資訊外洩的問題發生,但通訊日漸發達的今天,不管是通話或傳訊又對業務極有助益,綜合起來建置自有的通訊系統極有意義,本文即是對於有此考慮的讀者注入一劑強心針,讓本有意建置但想到Line Skype 等大公司才能開發,因此而望之卻步,透過本文可發現並非如此,相信讀者只要按本文所展示及提點的方式,必定可以如同台南市政府一般,在一年內即可建置及使用。撰寫此文是因筆者相信光一個『安全』的理由,未來如同我們這樣建置,必定比比皆是。