GoESL 與 Temporal:通話並非源自 FreeSWITCH 中的某一點
我正在將GoESL (https://www.php.cn/link/d9b64cee05c46d31b10b9869a3198a6d) 與Temporal 集成,以透過FreeSWITCH 自動撥號。此設定允許 1,000 個並發通道和每秒 50 個呼叫 (CPS)。每次撥號嘗試都會啟動臨時工作流程,該工作流程透過活動發起呼叫。
成功發起 96 個呼叫(可變數量)後,FreeSWITCH 不再處理更多呼叫。 CLI 中沒有日誌,事件套接字層中沒有事件指示進一步的嘗試。但是,如果我停止 Temporal Worker,先前「卡住」的呼叫會出現在 FreeSWITCH CLI 中,表示它們已由 GoESL 用戶端排隊。我可以確認工作人員不會陷入困境,因為它會繼續啟動主要工作流程。
以下是相關程式碼片段:
潛在客戶處理循環:
for _, lead := range leadResult.Leads { // [omitted setup and checks] // Checking for channel availability and sleeping to respect CPS limits workflow.Await(ctx, func() bool { return dialerQueryResponse.AvailableChannels > 0 }) timeToSleep := time.Second / time.Duration(dialerQueryResponse.CallsPerSecondLimit) workflow.Sleep(ctx, timeToSleep) // Dialing the lead fmt.Printf("dialing lead %s\n", lead) dialLead(lead, selectedDialer.Id, callTimeout) fmt.Print("lead dialed\n\n") }
撥號引導邏輯:
dialLead := func(lead string, selectedDialerId, dialerCallTimeout int) { // Setup child workflow context with unique ID cwo.WorkflowID = fmt.Sprintf("Campaign_Call_%s", lead) childCtx := workflow.WithChildOptions(ctx, cwo) // Struct to pass input to the child workflow input := domain.CallWorkflowInput{ Lead: lead, DialerId: selectedDialerId, CampaignName: cds.CampaignName, DialplanExtension: cc.Survey.DialplanExtension, CallTimeout: dialerCallTimeout, } // Executing the child workflow and handling its future future := workflow.ExecuteChildWorkflow(childCtx, CallWorkflow, input) var dialerId int selector.AddFuture(future, func(f workflow.Future) { err := f.Get(ctx, &dialerId) // Error handling and updating concurrency state // ... }) }
呼叫工作流程函數:
func CallWorkflow(ctx workflow.Context, input domain.CallWorkflowInput) (int, error) { // [omitted setup] // Executing the originate call activity var dialLeadResult domain.DialLeadResponse if err := workflow.ExecuteActivity(ctx, activity.Dialer.OriginateCallActivity, dialInput).Get(ctx, &dialLeadResult); err != nil { // Error handling } // [omitted post-call handling] }
依序執行發起呼叫活動:
func (a *DialerActivities) OriginateCallActivity(ctx context.Context, input domain.DialLeadRequest) (domain.DialLeadResponse, error) { // [omitted client selection] // Command to originate the call cmd := fmt.Sprintf("originate {%s}%s/%s/%s 704 XML default test %s 10", variables, protocol, gateway, input.DestinationNumber, input.OriginatingNumber) err := selectedClient.BgApi(cmd) if err != nil { // Error handling } // [omitted response preparation] }}, nil }
是否有人在使用 GoESL 或 Temporal 時遇到類似的問題,其中呼叫似乎在排隊並且超過某個點後未執行?關於如何調試這種情況或為什麼終止臨時工作線程可能會觸發排隊呼叫的處理有什麼建議嗎?
我嘗試過的:
- 確保遵守限制。
- 使用 FreeSWITCH CLI 進行偵錯並檢查 CDR。
- 檢查 FreeSWITCH 日誌以嘗試尋找任何異常情況。
- 嘗試在 FreeSWITCH 設定中記錄 GoESL 事件的日誌,但沒有將任何日誌寫入該檔案。
- 將
workflow.Sleep
持續時間從幾毫秒修改為 5 - 10 秒,以確保不是網路延遲導致問題。 - 確認在終止工作流程之前我的程式碼或日誌中不會引發任何錯誤。
- 已停止 FreeSWITCH 實例,以確保這不是 GoESL 與 FreeSWITCH 之間的通訊問題。停止 FreeSWITCH 實例時,日誌指示通訊失敗。否則我不會收到任何日誌。
- 研究:在Google 上找到這篇文章(https://lists.freeswitch.org/pipermail/freeswitch-users/2019-May/131768.html),該文章似乎與我們遇到的同一問題有關,但是,沒有解決辦法。
正確答案
決定更換GoESL 軟體包(https://www.php.cn/link/d9b64cee05c46d31b10b9869a3198a6d )使用不同的GoESL 套件(https://www.php.cn/link/8c8566b78ac2b99c542bef8c37cac179)和問題已經解決了。似乎是初始 GoESL 套件中的一個根本問題。
我在此處的 Github 儲存庫上提出了一個問題 (https://github.com /0x19/goesl/issues/40)以防將來有人遇到同樣的問題。
以上是GoESL 與 Temporal:通話並非源自 FreeSWITCH 中的某一點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

RedmiNote13RPro是一款性能配置非常不錯的全新機型,這款手機中有一個隱藏相簿的功能十分好用,它可以幫助用戶將相簿隱藏起來,讓別人無法查看你的相簿。接下來,小編就來跟大家說紅米Note13RPro怎麼隱藏相冊,幫助大家保護隱私。紅米Note13RPro怎麼隱藏相簿? 1.進入小米手機的設定裡。 2、然後再點選隱私和保護。 3.在這裡再點選保護隱私。 4、點選保險箱。 5.最後在這裡就可以設置私密相簿。常見問題連接藍牙換輸入法主題更換出廠設定隱藏應用投影電視NFC開啟雙卡安裝啟動時間

不要改變原內容的意思,微調內容,重寫內容,不要續寫紅米Note13RPro不僅性能出色,使用體驗更加出色,為了讓大家有更舒適的使用體驗,紅米Note13RPro配備了字體調整功能,讓用戶能夠調整自己的手機的字體。如果你想知道紅米Note13RPro怎麼調整字體大小,那就來看看吧。紅米Note13RPro怎麼調整字體大小? 1.開啟“設定”應用程式。 2.捲動到底部,選擇“顯示”。 3.點選“文字大小”。 4.在此畫面上,您可以拖曳滑桿調整字體大小或選擇預設字體大小。 5.調整完畢後,按「確定」保

RedmiNote13RPro這款手機最近是非常火爆的,很多消費者都購買了這款手機,不過很多用戶是第一次使用這款手機所以不清楚紅米Note13RPro怎麼連接電腦,對此,小編在這裡為大家帶來了詳細的教學介紹。紅米Note13RPro怎麼連接電腦? 1.使用USB線將紅米手機連接到電腦的USB介面。 2.開啟手機設置,擊選項,將USB調試開啟。 3.在電腦上開啟裝置管理員,找到行動裝置選項。 4.右鍵點選行動裝置,選擇更新驅動程式,然後選擇自動搜尋更新的驅動程式。 5.如果電腦沒有自動搜尋到驅動程序,

紅米Note13RPro手機在軟體功能上整合了多項智慧工具,其中,從圖片中快速準確地提取文字內容便是其中之一,下面小編將為大家介紹紅米Note13RPro如何提取圖片中的文字。紅米Note13RPro怎麼擷取圖中的文字?使用小米掃碼功能,打開手機的掃碼應用,點擊圖片圖標,選擇一張圖片,然後點擊右邊的「識別文字」選項,成功提取圖片中的文字。透過手機相簿操作。在手機相簿中找到需要提取文字的圖片,點擊圖片下方的“更多”,選擇“提取文字”,識別成功後,可以根據需要複製或保存文字。利用微信小程式。打開微

整個活吧是一款非常好玩的休閒解謎小遊戲,大家可以在多平台體驗!遊戲提供了無數精彩的關卡等待解鎖,每個關卡都充滿了新奇和挑戰,讓你體驗回答問題的有趣冒險,開啟全新的遊戲內容。那麼整個活吧全關卡怎麼通關呢?今天為大家帶來了《整個活吧》全關卡通關攻略大全分享,大家過關遇到問題可以來參考一下哦! 《整個活吧》全關卡通關攻略大全《整個活吧》全關卡通關攻略大全幫她守歲人鬼情未了幫小姐姐識別渣男狼外婆幫小女孩脫離危險戶外探險假裝看不見阿飄變回人形幫猩猩修成人形後座有人保持鎮定和女鬼週旋夜班出租車保持鎮定和女鬼週

紅米Note13RPro的拍照功能非常好用,特別是在拍照的時候會模擬相機快門的聲音,不過這個功能在圖書館等一些安靜的場合會影響別人,所以很多用戶想知道紅米Note13RPro怎麼關閉拍照聲音,下面就讓小編來告訴你。紅米Note13RPro怎麼關閉拍照聲音? 1.第一種方法,首先需要開啟手機的設定。 2.然後在設定選單下找到系統應用程式。 3.緊接著我們在系統應用介面下找到相機選項。 4.最後,我們在相機介面下就可以設定相機聲音的關閉與否了,只需要將相機聲音右邊的開關關閉就可以了。 5.第二種方法,第一步,打開

RedmiNote13RPro是一款備受廣大用戶喜愛的手機。這款手機提供了特別的方法來讓流量顯示在手機上,如果你還不知道RedmiNote13RPro怎麼設定顯示流量,那麼就跟著小編一起來了解一下吧。紅米Note13RPro怎麼設定流量顯示? 1、進入“設定”,點選“雙卡行動網路”。 2、下滑選擇「流量套餐設定」選項。 3.開啟「通知列顯示流量資訊」及「狀態列顯示當時網速」右側的功能開關。 4.設定成功後,下拉狀態列就可以看到即時網速及流量資訊的顯示了。常見問題連接藍牙換輸入法主題更換出廠設定隱藏應用投

紅米Note13RPro是紅米最新推出的旗艦手機,這款手機上有許多人性化的功能,例如一鍵鎖定螢幕功能,該功能可以幫助大家快速鎖屏,保護大家的隱私。如果你想知道紅米Note13RPro怎麼一鍵鎖屏,那就別錯過了。紅米Note13RPro怎麼設定一鍵鎖定畫面? 1.從下往上滑動,找到新增小組件的地方點擊。 2.找到小工具這裡,再點選「全部」3、點選下面的「安卓小工具」4、找到鎖定畫面新增上就可以了。常見問題連接藍牙換輸入法主題更換出廠設定隱藏應用投影電視NFC開啟雙卡安裝啟動時間
