


GoESL vs. Temporal: Der Anruf kommt nicht von einem bestimmten Punkt in FreeSWITCH
Ich integriere GoESL (https://www.php.cn/link/d9b64cee05c46d31b10b9869a3198a6d) mit Temporal, um über FreeSWITCH automatisch zu wählen. Dieses Setup ermöglicht 1.000 gleichzeitige Kanäle und 50 Anrufe pro Sekunde (CPS). Jeder Wählversuch startet einen temporären Workflow, der den Anruf über eine Aktivität initiiert.
Nach 96 erfolgreichen Anrufen (eine variable Anzahl) bearbeitet FreeSWITCH keine weiteren Anrufe mehr. Es gibt keine Protokolle in der CLI und keine Ereignisse in der Event-Socket-Schicht, die auf weitere Versuche hinweisen. Wenn ich jedoch den Temporal Worker stoppe, werden die zuvor „steckengebliebenen“ Anrufe in der FreeSWITCH-CLI angezeigt, was darauf hinweist, dass sie vom GoESL-Client in die Warteschlange gestellt wurden. Ich kann bestätigen, dass der Worker nicht hängen bleibt, während er weiterhin den Hauptworkflow startet.
Die folgenden Codeausschnitte sind relevant:
Lead-Verarbeitungsschleife:
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") }
Einwahl-Anleitungslogik:
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 // ... }) }
Workflow-Funktion aufrufen:
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] }
Führen Sie die Anrufeinleitungsaktivitäten nacheinander aus:
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 }
Ist jemand bei der Verwendung von GoESL oder Temporal auf ein ähnliches Problem gestoßen, bei dem Anrufe scheinbar in der Warteschlange stehen und ab einem bestimmten Punkt nicht mehr ausgeführt werden? Irgendwelche Vorschläge zum Debuggen dieser Situation oder warum das Beenden des temporären Arbeitsthreads die Verarbeitung von Anrufen in der Warteschlange auslösen könnte?
Was ich versucht habe:
- Befolgen Sie unbedingt die Einschränkungen.
- Verwenden Sie die FreeSWITCH-CLI zum Debuggen und Überprüfen von CDRs.
- Überprüfen Sie die FreeSWITCH-Protokolle, um etwaige Anomalien zu finden.
- Es wird versucht, GoESL-Ereignisse im FreeSWITCH-Setup zu protokollieren, aber es werden keine Protokolle in die Datei geschrieben.
- Ändern
workflow.Sleep
die Dauer von einigen Millisekunden auf 5–10 Sekunden, um sicherzustellen, dass das Problem nicht durch die Netzwerklatenz verursacht wird. - Bestätigt, dass in meinem Code oder meinen Protokollen keine Fehler ausgegeben werden, bevor der Workflow beendet wird.
- Die FreeSWITCH-Instanz wurde gestoppt, um sicherzustellen, dass es sich nicht um ein Kommunikationsproblem zwischen GoESL und FreeSWITCH handelt. Beim Stoppen einer FreeSWITCH-Instanz zeigt das Protokoll einen Kommunikationsfehler an. Ansonsten erhalte ich keine Protokolle.
- Recherche: Ich habe diesen Artikel bei Google gefunden (https://lists.freeswitch.org/pipermail/freeswitch-users/2019-May/131768.html), der mit demselben Problem zu tun zu haben scheint, das wir hatten. Es gibt jedoch keinen Lösung.
Richtige Antwort
Beschlossen, das GoESL-Paket (https://www.php.cn/link/d9b64cee05c46d31b10b9869a3198a6d) zu ändern, um ein anderes GoESL-Paket (https://www.php.cn/) zu verwenden. link/ 8c8566b78ac2b99c542bef8c37cac179) und das Problem wurde gelöst. Scheint ein grundlegendes Problem im ersten GoESL-Paket zu sein.
Ich habe hier (https://github.com/0x19/goesl/issues/40) ein Problem im Github-Repository angesprochen, für den Fall, dass in Zukunft jemand auf dasselbe Problem stößt.
Das obige ist der detaillierte Inhalt vonGoESL vs. Temporal: Der Anruf kommt nicht von einem bestimmten Punkt in FreeSWITCH. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



RedmiNote13RPro ist ein neues Modell mit sehr guter Leistung und Konfiguration. Dieses Telefon verfügt über eine sehr nützliche Funktion zum Ausblenden von Fotoalben. Als Nächstes erklärt Ihnen der Herausgeber, wie Sie das Fotoalbum auf dem Redmi Note13R Pro ausblenden können, um Ihre Privatsphäre zu schützen. Wie verstecke ich ein Fotoalbum auf dem Redmi Note13RPro? 1. Geben Sie die Einstellungen Ihres Xiaomi-Telefons ein. 2. Klicken Sie dann auf Datenschutz und Schutz. 3. Klicken Sie hier erneut auf „Privatsphäre schützen“. 4. Klicken Sie auf den Safe. 5. Abschließend können Sie hier ein privates Fotoalbum einrichten. Häufig gestellte Fragen: Bluetooth verbinden, Eingabemethoden-Thema ändern, Werkseinstellungen ändern, Anwendungen ausblenden, TV spiegeln, NFC, Dual-SIM-Installation aktivieren, Aktivierungszeit

Ändern Sie nicht die Bedeutung des ursprünglichen Inhalts, optimieren Sie den Inhalt, schreiben Sie ihn nicht weiter. Redmi Note13RPro bietet nicht nur eine hervorragende Leistung, sondern auch ein noch besseres Benutzererlebnis Das Redmi Note13RPro ist mit einer komfortablen Benutzererfahrung ausgestattet und verfügt über eine Schriftartenanpassungsfunktion, mit der Benutzer Schriftarten für Ihr Telefon anpassen können. Wenn Sie wissen möchten, wie Sie die Schriftgröße des Redmi Note13R Pro anpassen können, dann werfen Sie einen Blick darauf. Wie passt man die Schriftgröße auf dem Redmi Note13RPro an? 1. Öffnen Sie die Einstellungen-App. 2. Scrollen Sie nach unten und wählen Sie „Anzeige“. 3. Klicken Sie auf „Textgröße“. 4. Auf diesem Bildschirm können Sie die Schriftgröße anpassen, indem Sie den Schieberegler ziehen oder eine voreingestellte Schriftgröße auswählen. 5. Nachdem die Anpassung abgeschlossen ist, drücken Sie zum Speichern auf „OK“.

Das Mobiltelefon Redmi Note13RPro erfreut sich in letzter Zeit großer Beliebtheit. Viele Benutzer verwenden dieses Mobiltelefon jedoch zum ersten Mal und wissen daher nicht, wie sie das Redmi Note13RPro an den Computer anschließen sollen In diesem Zusammenhang ist der Herausgeber hier, um Ihnen eine ausführliche Tutorial-Einführung zu erklären. Wie verbinde ich das Redmi Note13RPro mit dem Computer? 1. Verbinden Sie das Redmi-Telefon über ein USB-Datenkabel mit der USB-Schnittstelle des Computers. 2. Öffnen Sie die Telefoneinstellungen, klicken Sie auf Optionen und aktivieren Sie das USB-Debugging. 3. Öffnen Sie den Geräte-Manager auf Ihrem Computer und suchen Sie die Option für mobile Geräte. 4. Klicken Sie mit der rechten Maustaste auf das Mobilgerät, wählen Sie „Treiber aktualisieren“ und dann „Automatisch nach aktualisierten Treibern suchen“. 5. Wenn der Computer nicht automatisch nach dem Treiber sucht,

Das Mobiltelefon Redmi Note13RPro integriert eine Reihe intelligenter Tools in Bezug auf Softwarefunktionen. Eines davon ist das schnelle und genaue Extrahieren von Textinhalten aus Bildern. Der folgende Editor stellt Ihnen vor, wie Redmi Note13RPro Text aus Bildern extrahiert. Wie extrahiere ich Text aus Bildern auf dem Redmi Note13RPro? Verwenden Sie die QR-Code-Scanfunktion von Xiaomi, öffnen Sie die QR-Code-Scananwendung auf Ihrem Telefon, klicken Sie auf das Bildsymbol, wählen Sie ein Bild aus und klicken Sie dann rechts auf die Option „Text erkennen“, um den Text im Bild erfolgreich zu extrahieren. Bedienung über das Handyalbum. Suchen Sie im Handyalbum nach dem Bild, dessen Text extrahiert werden soll, klicken Sie unter dem Bild auf „Mehr“ und wählen Sie „Text extrahieren“. Nach erfolgreicher Erkennung können Sie den Text nach Bedarf kopieren oder speichern. Verwenden Sie WeChat-Miniprogramme. Mikro öffnen

Entire Huoba ist ein sehr unterhaltsames Gelegenheits-Puzzlespiel, das jeder auf mehreren Plattformen erleben kann! Das Spiel bietet unzählige spannende Level, die darauf warten, freigeschaltet zu werden. Jedes Level ist voller Neuheiten und Herausforderungen und ermöglicht es Ihnen, ein interessantes Abenteuer zu erleben, bei dem Sie Fragen beantworten und neue Spielinhalte freischalten. Wie kann man also das gesamte Level von Huoba abschließen? Heute bringe ich Ihnen einen vollständigen Leitfaden für alle Level von „Whole Life“. Wenn Sie beim Bestehen des Levels auf Probleme stoßen, können Sie darauf zurückgreifen! „Das ganze Leben“: Vollständiger Leitfaden für alle Ebenen von „Das ganze Leben“. Der vollständige Leitfaden für alle Ebenen von „Das ganze Leben“. Helfen Sie ihr, sich den Silvesterabend anzuschauen, helfen Sie der kleinen Schwester, den Dreckswolf zu identifizieren, und der Großmutter Um dem kleinen Mädchen zu helfen, aus der Gefahr zu kommen, gibt das Outdoor-Abenteuer vor, Ah Piao nicht zu sehen, und verwandelt sich wieder in einen Humanoiden. Jemand auf dem Rücksitz blieb ruhig und kümmerte sich um den weiblichen Geist ruhig und ging mit dem weiblichen Geist um.

Die Kamerafunktion des Redmi Note13RPro ist sehr einfach zu bedienen, insbesondere beim Aufnehmen von Bildern simuliert sie das Geräusch des Kameraverschlusses. In ruhigen Situationen wie Bibliotheken kann diese Funktion jedoch andere stören, daher möchten viele Benutzer wissen, wie man sich dreht Lassen Sie sich vom Redakteur unten den Kameraton des Redmi Note13RPro ausschalten. Wie schalte ich den Kameraton beim Redmi Note13RPro aus? 1. Bei der ersten Methode müssen Sie zunächst die Einstellungen Ihres Telefons öffnen. 2. Suchen Sie dann im Einstellungsmenü nach Systemanwendungen. 3. Als nächstes finden wir die Kameraoption unter der Systemanwendungsoberfläche. 4. Schließlich können wir in der Kameraschnittstelle festlegen, ob der Kameraton ausgeschaltet werden soll. Wir müssen nur den Schalter auf der rechten Seite des Kameratons ausschalten. 5. Die zweite Methode, der erste Schritt, öffnen

RedmiNote13RPro ist ein Mobiltelefon, das von den meisten Benutzern geliebt wird. Dieses Telefon bietet eine spezielle Methode zum Anzeigen des Datenverkehrs auf dem Telefon. Wenn Sie immer noch nicht wissen, wie Sie RedmiNote13RPro für die Anzeige des Datenverkehrs einrichten, folgen Sie dem Editor, um dies herauszufinden. Wie stelle ich die Verkehrsanzeige auf dem Redmi Note13RPro ein? 1. Geben Sie „Einstellungen“ ein und klicken Sie auf „Dual-SIM-Mobilfunknetz“. 2. Scrollen Sie nach unten, um die Option „Datenpaketeinstellungen“ auszuwählen. 3. Aktivieren Sie die Funktionsschalter auf der rechten Seite von „Verkehrsinformationen in der Benachrichtigungsleiste anzeigen“ und „Aktuelle Netzwerkgeschwindigkeit in der Statusleiste anzeigen“. 4. Nachdem die Einstellung erfolgreich war, ziehen Sie die Statusleiste nach unten, um die Anzeige der Netzwerkgeschwindigkeit und Verkehrsinformationen in Echtzeit anzuzeigen. FAQ Verbinden Sie Bluetooth. Ändern Sie das Thema der Eingabemethode. Ändern Sie die Werkseinstellungen. Verbergen Sie die Anwendungsübertragung

Redmi Note13R Pro ist das neueste Flaggschiff-Telefon von Redmi. Dieses Telefon verfügt über viele benutzerfreundliche Funktionen, wie z. B. die Ein-Klick-Bildschirmsperrfunktion, die jedem helfen kann, den Bildschirm schnell zu sperren und die Privatsphäre aller zu schützen. Wenn Sie wissen möchten, wie Sie den Bildschirm des Redmi Note13RPro mit einem Klick sperren können, sollten Sie es sich nicht entgehen lassen. Wie richte ich die Ein-Klick-Bildschirmsperre auf dem Redmi Note13RPro ein? 1. Wischen Sie von unten nach oben und klicken Sie auf die Stelle, an der Sie das Widget hinzufügen möchten. 2. Suchen Sie hier nach den Widgets und klicken Sie dann auf „Alle“. 3. Klicken Sie unten auf „Android-Widgets“. 4. Suchen Sie den Sperrbildschirm und fügen Sie ihn hinzu. Häufig gestellte Fragen: Bluetooth verbinden, Eingabemethoden-Thema ändern, Werkseinstellungen ändern, Anwendungen ausblenden, TV spiegeln, NFC, Dual-SIM-Installation aktivieren, Aktivierungszeit
