Inhaltsverzeichnis
Richtige Antwort
Heim Backend-Entwicklung Golang GoESL vs. Temporal: Der Anruf kommt nicht von einem bestimmten Punkt in FreeSWITCH

GoESL vs. Temporal: Der Anruf kommt nicht von einem bestimmten Punkt in FreeSWITCH

Feb 06, 2024 am 09:21 AM
lsp

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

Frageninhalt

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")
}
Nach dem Login kopieren

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
        // ...
    })
}
Nach dem Login kopieren

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]
}
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie verstecke ich ein Fotoalbum auf dem Redmi Note13RPro? Wie verstecke ich ein Fotoalbum auf dem Redmi Note13RPro? May 01, 2024 pm 12:50 PM

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

Wie passt man die Schriftgröße auf dem Redmi Note13RPro an? Wie passt man die Schriftgröße auf dem Redmi Note13RPro an? May 07, 2024 pm 06:34 PM

Ä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“.

Wie verbinde ich das Redmi Note13RPro mit dem Computer? Wie verbinde ich das Redmi Note13RPro mit dem Computer? May 09, 2024 pm 06:52 PM

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,

Wie extrahiere ich Text aus Bildern auf dem Redmi Note13RPro? Wie extrahiere ich Text aus Bildern auf dem Redmi Note13RPro? May 08, 2024 pm 10:00 PM

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

Ein vollständiger Leitfaden für alle Ebenen von „Whole Life' Ein vollständiger Leitfaden für alle Ebenen von „Whole Life' May 07, 2024 pm 06:31 PM

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.

Wie schalte ich den Kameraton beim Redmi Note13RPro aus? Wie schalte ich den Kameraton beim Redmi Note13RPro aus? May 02, 2024 pm 06:31 PM

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

Wie stelle ich die Verkehrsanzeige auf dem Redmi Note13RPro ein? Wie stelle ich die Verkehrsanzeige auf dem Redmi Note13RPro ein? May 02, 2024 pm 03:34 PM

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

Wie richte ich die Ein-Klick-Bildschirmsperre auf dem Redmi Note13RPro ein? Wie richte ich die Ein-Klick-Bildschirmsperre auf dem Redmi Note13RPro ein? May 01, 2024 pm 12:37 PM

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

See all articles