Sale Database Tools Enhance User Experience and Sales Efficiency
-
surovy27
- Posts: 2
- Joined: Tue Dec 03, 2024 3:16 am
Post
by surovy27 »
在 Tiledesk,人類和聊天機器人從第一天起就並肩工作。人類和聊天機器人都透過基於文字的全雙工通道進行通信,我們通常將其稱為即時訊息傳遞或簡稱為聊天,因此為我們的即時訊息引擎選擇正確的技術是至關重要的一步。 我們最初探索了許多開源即時通訊引擎。最後,在放棄所有這些之後(原因見下文)——我們決定建立我們自己的開源訊息傳遞引擎。我們選擇 MQTT 協定是因為它的靈活性,並利用RabbitMQ提供的強大的訊息代理程式和 MQTT 支援來實現我們的解決方案。在這篇短文中,我將告訴您為什麼我們選擇 MQTT 協議,以及有關即時通訊內部架構的 Tiledesk 設計的一些細節。 MQTT (
https://mqtt.org/ ),代表訊息佇列遙測傳輸,是一種簡單且輕量級的訊息傳遞協定。該協定非常適合物聯網 (IoT),因為它旨在支援持續的低頻寬連接,即在資源同樣有限的設備之間傳輸的最大資料量非常有限的連接。 MQTT 按照發布-訂閱模式運行,允許設備透過處理設備之間訊息的代理進行非同步通訊。 MQTT 協定的使用最初是為了促進物聯網領域的通訊而設計的,但由於用於物聯網訊息傳遞的原理和方法適用於看似非常不同的領域,因此已擴展到經常意想不到的領域。一個令人驚訝的方面是它的採用,例如在即時訊息傳遞中。 Facebook (Meta) 等大公司已採用它作為其訊息應用程式的協議。 一般來說,聊天用戶端(即能夠與其他類似應用程式即時發送和接收訊息的應用程式)具有與物聯網設備類似的特徵。 典型的訊息應用程式(例如 Facebook Messenger、WhatsApp 或 Telegram)有以下要求: 能夠管理聯絡人清單。 能夠即時發送和接收「直接」短信,即從一個聯絡人到另一個聯絡人。 允許聯絡人之間進行「群組」對話,其中一個聯絡人同時向一組參與者發送訊息。 監控聯絡人的「線上」狀態,即即時判斷線上或離線狀態。 支援二進位檔案傳輸,如影像、影片、文件、地理位置等。 支援使用靈活且不斷發展的模式(例如輪播和畫廊)交換元資料。 存檔交換訊息的歷史記錄。 在這種情況下,事實證明,MQTT 協定在實現訊息功能方面特別有效,本質上涵蓋了上面列出的第 2、3、4、5 和 6 點。這種有效性促使 Tiledesk 選擇採用 MQTT 作為其名為chat21的開源即時訊息引擎。 相比之下,儘管考慮了其他協議,例如 XMPP,但由於其複雜性而沒有考慮。 XMPP 是基於 XML 協議,有一些明顯的局限性,例如: XML語言的冗長,往往會增加傳輸的資料量而不添加相關訊息,從而消耗寶貴的頻寬資源。 計算量大的分析,這可能是資源有限的設備的限制因素。 XMPP 標準的發展有困難,這阻礙了其輕鬆適應快速發展的 Tiledeskesigenze 的特定需求。 這些因素導致我們選擇 MQTT 而不是其他協議,因為它被認為更適合滿足現代訊息傳遞系統的需求。 採用 MQTT 作為 Tiledesk 訊息傳遞基礎設施的底層協定還具有以下好處,例如減少通訊開銷並促進新客戶立即整合到已建立的通訊生態系統中。 考慮到大多數 Tiledesk 用戶端應用程式都設計為在瀏覽器中運行(例如Web Widget或代理聊天應用程式),我們使用MQTT.js 程式庫來實作 MQTT 協定。我們發現 MQTT.js 庫得到積極維護、用途廣泛,並且與各種運行時環境相容,包括伺服器端(使用 NodeJS)和客戶端(Web 應用程式直接在瀏覽器中運行)。 MQTT 協議具有以下主要優點: 通訊效率:MQTT 旨在高效支援具有最小運算能力和有限頻寬的低功耗設備之間的通訊。這對於在硬體資源有限(例如智慧型手機)的環境中保證流暢可靠的訊息傳遞至關重要。 有效負載靈活性:另一個重要方面是建立鬆散結構的訊息有效負載的能力。 MQTT 不強加預先定義的資料模式,允許根據特定應用需求自由設計資料模型。這樣就無需遵守嚴格的標準(例如 XMPP),並且可以更輕鬆地使協議適應各種用例。 廣泛的平台可用性:有多種平台,包括開源(例如我們選擇的 RabbitMQ)和商業(例如 HiveMQ),都為管理 MQTT 連接提供本機支援。 整合存在管理:MQTT 結合了用於管理設備存在狀態的本機機制,這是物聯網設備和管理人與人通訊的關鍵功能。即時監控對話者的可用性對於建立即時訊息解決方案至關重要。 總而言之,MQTT 的突出之處在於其能夠提供高效、穩定的通信,並得到多種平台的良好支持,這對於管理異構物聯網設備至關重要,並且能夠保證高性能和高效的資源管理。這些方面使其特別適合滿足動態消息傳遞環境的需求,其中計算輕便性、資料靈活性和可靠的連接管理是基本要求。一切都無需重新發明輪子。 RabbitMQ,“核心” 也因為它對 MQTT 協定非常強大的本機支持,並確保我們需要訊息代理程式的所有可擴展性和彈性設計。 訊息代理程式是一種軟體中介,其任務是協調不同系統、應用程式或裝置之間的通訊。它接收來自發送者或發布者的消息,並將它們路由到接收者或消費者。訊息代理程式在以訊息為導向的體系結構和分散式系統中發揮關鍵作用,其中各種元件必須以可靠且可擴展的方式相互通訊。 使用 RabbitMQ 作為訊息代理的主要優點在於它對 MQTT 的支持,從 RabbitMQ 版本 3.12 開始,MQTT 成為「原生」。這標誌著性能的顯著進步,能夠同時管理數百萬台設備並發送數百萬條訊息。這就是我們依賴 RabbitMQ 作為新訊息傳遞引擎以及它對AMQP 版本 0.9.1協定的支援的主要原因,因為需要一個能夠支援「多種通訊」的多功能且強大的訊息傳遞系統模型並保證很高的可靠性,包括訊息的一致性,這在即時通訊複雜的場景中是必要的。事實上,AMQP 0.9.1 提供的功能集反映了設計階段確定的需求,例如靈活的訊息路由、傳遞確認和事務支援。 如上所述,RabbitMQ的開源性質只能被視為我們開源平台的一個顯著優勢,為我們提供了客製化和擴展代理以滿足專案特定需求的可能性,避免了我們的限制和額外成本和我們的社區。其他優點包括由開發者社群提供的插件生態系統,該生態系統是圍繞該協議發展的。 chat21,“郵差” 下面是一個簡單的圖表,說明了 Tiledesk 即時訊息架構的主要元件。 客戶端應用程式(例如上圖中的 Web Widget)利用 MQTT 協定連接到 RabbitMQ,允許最終用戶透過特定路由傳輸訊息,對訊息的存取由 RabbitMQ 授予的自訂 JWT 令牌控制。 RabbitMQ JWT 令牌包含有關使用者可以寫入的允許主題(路徑)的特定資訊。
我們利用此功能允許使用者僅寫入包含/app/tilechat/users/ USER ID 的主題。使用者永遠不能直接在收件者的主題上書寫。這種機制確保每個客戶端只能將訊息寫入指定的路徑,如下例所示:並使用 AMQP 發布操作將其轉送至指定的接收者路徑,遵循以下模式: /apps/tilechat/users/RECIPIENT-USER-ID/SENDER-USER-ID/messages/clientadded 接收者透過 MQTT 發布通知接收訊息,該通知一旦解碼,就會通知新訊息到達,如路徑的特定末端(例如「/clientadded」)所示。 透過此系統的實現,Chat21創建了一個功能上相當於「收件匣」的結構,其中訊息不是直接在客戶端之間傳輸,而是由觀察者(Chat21伺服器)介導,從而允許在隱私、安全性、資料持久性和
斯洛維尼亞電話號碼數據 特定訊息策略的應用,包括封鎖使用者的能力。 採用基於 RabbitMQ JWT 令牌的細粒度安全模型進一步增強了系統安全性,該模型將使用者操作限制在指定的位置,從而防止未經授權的存取或修改他人的郵箱。 總而言之,所討論的訊息系統的操作模型受到SMTP/POP3 電子郵件協議原理的啟發,其中訊息被發送到指定的郵件伺服器郵箱(路徑「/outgoing」),隨後由觀察者重定向發送到收件人的收件匣,一旦收件者與RabbitMQ 建立連接,它們就可用。 與僅提供與訊息傳遞相關的功能的基於 MQTT 的原始訊息傳遞引擎相比,Tiledesk添加了一些面向「支援」聊天的功能。這些代表了傳統群組聊天的演變,其特點是可以「即時」實例化,並可以將一個或多個聊天機器人與同一群組內的人員一起託管,以優化請求的管理。
此外,該平台支援創建匿名用戶,保證簡化和立即存取支援服務,以及創建具有高級身份驗證機制的用戶。 最後,Tiledesk 整合了一個強大的自動化引擎,能夠透過使用無程式碼、基於人工智慧的生成工具來解釋和實現複雜的邏輯。這使得自動化工作流程的設計變得靈活且易於訪問,從而提高支援服務效率、縮短回應時間並根據特定用戶需求自訂互動。 結論 說到數字。實際上,使用我們的即時訊息引擎,我們平均每秒交換 200 則訊息,峰值僅為 500 則訊息/秒。選擇經過市場驗證的協議和平台(例如 MQTT 和 RabbitMQ)是正確的選擇。由於靈活的標準 (MQTT),我們可以非常快速地發展訊息傳遞引擎,滿足所有即將推出的 Tiledesk 需求。我們有很多未來的需求。由於AI在Tiledesk的滲透,消息引擎最先受到了AI浪潮的影響。例如,我們正在添加廣播文字訊息的功能,這是生成式 AI 所必需的功能,目的是透過盡快返回訊息文字(或其一部分)來減少產生 LLM 回應的長時間延遲。對於 XMPP,這是一個不可能的進展,而 MQTT/RabbitMQ 則提供了極大的靈活性。大型訊息傳遞廠商已經轉而選擇 MQTT 進行訊息傳遞(例如Facebook Messenger),而且可能還會有更多。我們發布了開源Chat21 引擎,讓每個人都有機會使用它或將其用作自己的訊息傳遞引擎的原型。它是 MIT 許可證,具有最大的靈活性。