Botframework-solutions: QnAMakerDialog wird nicht für verschiedene Sprachen erstellt

Erstellt am 29. Juni 2020  ·  22Kommentare  ·  Quelle: microsoft/botframework-solutions

Welches Projekt ist betroffen?

Virtueller Assistent und Fähigkeiten

In welcher Sprache ist das?

Typoskript

Was geschieht?

Wenn ein QnAMakerDialog mit einer bestimmten Sprache (z. B. DE) erstellt wird, wird immer diese Sprache aufgelöst, auch wenn Sie die Sprache ändern oder ein anderer Benutzer eine andere Sprache verwendet (z. B. EN).

Was sind die Schritte, um dieses Problem zu reproduzieren?

Benutzer 1 : Sendet die Äußerung an den Bot (DE);
Bot : Der Bot löst die Äußerung als QnA-Intent auf und erstellt den neuen QnADialog mit der KnowledgebaseId als ID des Dialogs:

`` private registerQnADialog(knowledgebaseId: string, cognitiveModels: ICognitiveModelSet, locale: string): void { const qnaEndpoint: QnAMakerEndpoint | undefined = cognitiveModels.qnaConfiguration.get(knowledgebaseId); if (qnaEndpoint == undefined){ throw new Error( QnA Maker-Wissensdatenbankkonfiguration mit ID: ${ KnowledgebaseId } nicht gefunden.`);
}

    if (this.dialogs.find(knowledgebaseId) == undefined) {
        const qnaDialog: QnAMakerDialog = new QnAMakerDialog(
            qnaEndpoint.knowledgeBaseId,
            qnaEndpoint.endpointKey,
            // The following line is a workaround until the method getQnAClient of QnAMakerDialog is fixed
            // as per issue https://github.com/microsoft/botbuilder-js/issues/1885
            new URL(qnaEndpoint.host).hostname.split('.')[0],
            this.templateEngine.generateActivityForLocale('UnsupportedMessage', locale) as Activity,
            // Before, instead of 'undefined' a '0.3' value was used in the following line
            undefined,
            this.templateEngine.generateActivityForLocale('QnaMakerAdaptiveLearningCardTitle', locale).text,
            this.templateEngine.generateActivityForLocale('QnaMakerNoMatchText', locale).text
        );

        qnaDialog.id = knowledgebaseId;

        this.addDialog(qnaDialog);
    }
}

```

Bot : Sendet QnA-Antwort an Benutzer 1 im Gebietsschema von Benutzer 1 (DE)
Benutzer 2 : Sendet die Äußerung an den Bot (EN);
Bot : Der Bot löst die Äußerung als QnA-Intent auf (der gleiche Benutzer 1 hat gesendet), es wird kein neuer QnaMakerDialog erstellt, da bereits ein Dialog mit derselben KnowledgebaseId existiert.
Bot : Der Bot startet erneut den QnA-Dialog (hinzugefügt von Benutzer 1 Iteration) und erhält die Antwort von der Wissensdatenbank (DE) des ersten Benutzers;
Bot : Sendet eine Nachricht an Benutzer 2 im Gebietsschema von Benutzer 1.

Was haben Sie erwartet?

Ein weiterer QnAMakerDialog wird mit der richtigen Sprache und der richtigen Wissensdatenbank-ID erstellt.

Bot Services Kobuk bug customer-replied-to customer-reported in-progress

Hilfreichster Kommentar

Hallo @Batta32 ,

danke für eure unterstützung, sieht so aus, als ob das problem mit der neuen bot-solutions-Bibliothek gelöst wurde, die ich aus eurem branchen integriert habe :) Habt ihr eine ungefähre Einschätzung, wann ihr sie veröffentlichen werdet?

Alle 22 Kommentare

Danke @tommyJimmy87. Sobald wir ein Update zur Implementierung von Dependency Injection haben, werden wir uns bei Ihnen melden!

Hallo @tommyJimmy87 , wir haben den PR #3559 erstellt, der dieses Problem Dependency Injection in die Bots integriert.

Wenn Sie so nett sind, können Sie die Änderungen mit diesen Repro-Schritten validieren und diesen Zweig verwenden :

  1. Zur Bibliothek für Bot-Lösungen gehen
  2. Führen Sie npm install , um die Abhängigkeiten zu installieren
  3. Führen Sie npm run build , um die Lösung zu kompilieren
  4. Führen Sie npm pack , um das tgz zu erstellen
  5. Gehen Sie zum Beispiel für den
  6. Verwenden Sie das erstellte tgz im Virtual Assistant package.json wie folgt:

    "bot-solutions": "WEG ZU BOT-SOLUTIONS TGZ"

  7. Stellen Sie den virtuellen Assistenten in mehreren Sprachen bereit

  8. Befolgen Sie die Schritte, um das QnAMakerDialog Ihnen erwähnte QnAMakerDialog Szenario zu reproduzieren

Zu guter Letzt enthält die PR, wie bereits erwähnt, folgende Änderungen:

  1. Implementierung von Dependency Injection ( inversifyjs Bibliothek) in Virtual Assistant und Skill of TypeScript
  2. Vorlagen aktualisieren

Wir werden auf Ihre Antwort aufmerksam sein 😊.

Hallo @Batta32 ,

danke für eure unterstützung, sieht so aus, als ob das problem mit der neuen bot-solutions-Bibliothek gelöst wurde, die ich aus eurem branchen integriert habe :) Habt ihr eine ungefähre Einschätzung, wann ihr sie veröffentlichen werdet?

HI @Batta32 , mir ist Komponententests auszuführen , eine Fehlermeldung TypeError: Reflect.hasOwnMetadata is not a function .
Liegt das daran, dass Sie die Tests nicht zur Verwendung von Inversify migriert haben?

Danke @tommyJimmy87! Wir werden dies überprüfen und uns bei Ihnen melden, sobald wir ein Update dazu haben 😊.

Hallo @Batta32 , wir haben dieses Problem gelöst, indem wir diesen Import zur Testbasis-Js-Datei hinzugefügt haben: require('reflect-metadata');

Hallo @tommyJimmy87 - wir konnten das von Ihnen erwähnte Problem im Zusammenhang mit den

Wir kamen auf Fragen :

  1. Verwenden Sie unseren Zweig , um diese Änderungen zu validieren?
  2. Welche Komponente hast du das Problem?
  3. Können Sie die Repro-Schritte teilen, die Sie befolgt haben?

Das ist unsere Umgebung :

  • Wir verwenden diesen Zweig : feature/southworks/dependency-injection-implementation
  • Beispiel für einen virtuellen TypeScript-Assistenten
  • TypeScript-Skill-Beispiel

Wir haben die folgenden Schritte unternommen, um das Problem für den virtuellen Assistenten und den Skill zu reproduzieren:

  1. Zur Bibliothek für Bot-Lösungen gehen
  2. Führen Sie npm install , um die Abhängigkeiten zu installieren
  3. Führen Sie npm run build , um die Lösung zu kompilieren
  4. Führen Sie npm pack , um das .tgz zu erstellen
  5. Gehen Sie zum Beispiel für den
  6. Verwenden Sie die erstellten .tgz im Virtual Assistant package.json wie folgt:
  7. "bot-lösungen": ""
  8. Führen Sie npm install , um die Abhängigkeiten zu installieren
  9. Führen Sie npm run build , um die Lösung zu kompilieren
  10. Führen Sie npm run test , um die Lösung zu kompilieren
  11. Überprüfen Sie die Testausführung

image

image

Hallo @tommyJimmy87 - wir haben die vorgeschlagenen Änderungen in der PR #3559 hinzugefügt.

Wir haben die Virtual Assistant- und Skill-Bots aktualisiert und die folgenden Importtestdateien hinzugefügt : require('reflect-metadata'); speziell in BotTestBase und SkillTestBase , um das von Ihnen erwähnte Problem im Zusammenhang mit den

Sie können diese Schritte ausführen , um die Änderungen im virtuellen Assistenten und im Skill zu testen.

Vielen Dank,
Diego.

Hallo @Batta32 und @DiegoCardozo94 ,

Ich habe eine allgemeine Frage, aber da ich diesen Branch bereits in unserem Projekt verwende, obwohl er noch nicht veröffentlicht wurde, würde ich ihn hier stellen.

In unserem Szenario haben wir MS Teams als einzigen Kanal. Ich sehe, dass der TeamsActivityHandler nur in der VA und nicht im Beispiel des Skills verwendet wird, richtig? Weil ich vielleicht fälschlicherweise auch im Skill den TeamsActivityHandler erweitert habe und das hat mich zu einem speziellen Problem geführt: Grundsätzlich wird die endOfConversation Methode nie nach einem cancel im DefaultActivityHandler $$ des Skills aufgerufen . Aber vielleicht sollte ich innerhalb der Skills einfach auf die "normale" ActivityHandler-Erweiterung wechseln. Könnt ihr mir helfen oder eher Feedback dazu geben?

Vielen Dank

Hallo @tommyJimmy87 , TeamsActivityHandler wird von ActivityHandler was Unterstützung für die spezifischen Ereignisse und Interaktionen von Microsoft Teams hinzufügt.

Der virtuelle Assistent ist derjenige , der in Wechselwirkung mit dem Microsoft Team Kanal im Schema des virtuellen Assistenten Fähigkeiten verbunden, so dass die DefaultActivityHandler des virtuellen Assistenten muss von der TeamsActivityHandler , nicht der Fähigkeit in diesem genannten Schema, wie Sie in den Beispielen sehen können.

Das DefaultActivityHandler des virtuellen Assistenten in den Vorlagen/Beispielen implementiert das TeamsActivityHandler , das Teams-Szenarien out-of-the-box ermöglicht.

Wir haben die folgende Dokumentation recherchiert, die Sie auch einsehen können:

Lass uns wissen, ob dir das hilft 😊.

Dieses Problem ist veraltet, da es seit 30 Tagen ohne Aktivität geöffnet war. Entferne veraltetes Label oder Kommentar oder dies wird in 5 Tagen geschlossen

@Batta32 das ist noch nicht veröffentlicht, oder?

Hallo @tommyJimmy87 - wir sind dabei, einen Plan zur Veröffentlichung neuer Pakete abzuschließen. Sobald wir ein Update haben, melden wir uns hier .

@Batta32 irgendwelche Updates?

Hallo @cwhitten , dieses Problem wurde bereits mit der PR #3559 behoben, die mit den angeforderten Änderungen von @peterinnesmsft aktualisiert wird.

Sobald die PR zusammengeführt wird, werden die Änderungen im next Zweig angezeigt.

Wie ist der Status von #3559? @Batta32

Das letzte Update dazu war am 11. September

Vielen Dank

Hallo @tonyanziano , die PR #3559 ist bereit zur Überprüfung und Zusammenführung mit den angeforderten Änderungen von @peterinnesmsft.

Sobald die PR zusammengeführt wird, werden die Änderungen im next Zweig angezeigt.

Dieses Problem ist veraltet, da es seit 30 Tagen ohne Aktivität geöffnet war. Entferne veraltetes Label oder Kommentar oder dies wird in 5 Tagen geschlossen

@joshgummersall wie ist der Status von #3752? Wann werden Sie das voraussichtlich zusammenführen?

Sobald jemand anderes es überprüfen und genehmigen kann!

@joshgummersall ,

Können Sie daran arbeiten, die PR zusammenzuführen, damit dieses Ticket geschlossen werden kann?

@virtual-josh, es wartet nur auf eine weitere PR-Rezension; es wurde bereits von einem Gutachter genehmigt. Ich bin mir nicht sicher, wen Sie für eine zweite Überprüfung anpingen sollen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen