ホームページ >バックエンド開発 >Golang >GoESL 対 Temporal: 通話は FreeSWITCH の特定のポイントから発信されていません

GoESL 対 Temporal: 通話は FreeSWITCH の特定のポイントから発信されていません

WBOY
WBOY転載
2024-02-06 09:21:04947ブラウズ

GoESL 与 Temporal:呼叫并非源自 FreeSWITCH 中的某个点

質問内容

GoESL (https://www.php.cn/link/d9b64cee05c46d31b10b9869a3198a6d) を Temporal と統合して、FreeSWITCH ダイヤル経由で自動化しています。この設定では、1,000 の同時チャネルと 1 秒あたり 50 の呼び出し (CPS) が可能です。ダイヤルを試行するたびに、アクティビティを通じて通話を開始する一時的なワークフローが開始されます。

96 回の通話 (可変数値) が正常に開始されると、FreeSWITCH はそれ以上の通話を処理しなくなります。 CLI にはログはなく、イベント ソケット レイヤーにはさらなる試行を示すイベントはありません。ただし、Temporal Worker を停止すると、以前に「スタック」した呼び出しが FreeSWITCH CLI に表示され、GoESL クライアントによってキューに入れられていることを示します。ワーカーがメイン ワークフローの起動を続けているため、スタックしていないことが確認できます。

以下は関連するコード スニペットです:

リード処理ループ:

リーリー

ダイヤルアップ ガイダンス ロジック:

リーリー

ワークフロー関数の呼び出し:

リーリー

通話開始アクティビティを順番に実行します:

リーリー

GoESL または Temporal を使用しているときに、呼び出しがキューに入れられ、特定の時点を超えると実行されなくなるという同様の問題に遭遇した人はいますか?この状況をデバッグする方法、または一時ワーカー スレッドを強制終了するとキューに入れられた呼び出しの処理がトリガーされる理由について何か提案はありますか?

私が試したこと:

  • 制限事項は必ずお守りください。
  • FreeSWITCH CLI を使用して CDR をデバッグおよび検査します。
  • FreeSWITCH ログをチェックして、異常を見つけてください。
  • FreeSWITCH セットアップで GoESL イベントのログを記録しようとしましたが、ログはファイルに書き込まれませんでした。
  • workflow.Sleep の期間を数ミリ秒から 5 ~ 10 秒に変更して、問題の原因がネットワーク遅延でないことを確認します。
  • ワークフローを終了する前に、コードまたはログにエラーがスローされていないことを確認してください。
  • これが GoESL と FreeSWITCH の間の通信の問題ではないことを確認するために、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 パッケージの根本的な問題のようです。

将来誰かが同じ問題に遭遇した場合に備えて、ここ (https://github.com/0x19/goesl/issues/40) で Github リポジトリに問題をオープンしました。

以上がGoESL 対 Temporal: 通話は FreeSWITCH の特定のポイントから発信されていませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。