-
Hintergrund
-
Mit einem automatisierten Assistenten (der auch als ”persönlicher Assistent”, ”mobiler Assistent” oder ”Chatbot” bekannt ist) kann durch einen Anwender über eine Vielfalt von Client-Vorrichtungen interagiert werden, wie beispielsweise Smartphones, Tablet-Computer, tragbare Vorrichtungen, Automobilsysteme, alleinstehende Vorrichtungen für einen persönlichen Assistenten und so werter. Ein automatisierter Assistent empfängt eine Eingabe vom Anwender (z. B. eine maschinengeschriebene bzw. getippte und/oder gesprochene Eingabe in natürlicher Sprache) und antwortet mit Antwortinhalt (z. B. einer visuellen und/oder akustischen Ausgabe in natürlicher Sprache). Ein automatisierter Assistent, mit dem über eine Client-Vorrichtung interagiert wird, kann implementiert sein über die Client-Vorrichtung selbst und/oder über eine oder mehrere entfernte Computervorrichtungen, die in Netzwerkkommunikation mit der Client-Vorrichtung sind (z. B. Computervorrichtung(en) in ”der Cloud”).
-
Zusammenfassung
-
Um durch das Gebrauchsmuster geschützt und Gegenstand des Gebrauchsmusters zu sein, gibt es gemäß den Erfordernissen des Gebrauchsmustergesetzes nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren. In dem Fall, in welchem die Beschreibung auf Verfahren Bezug nimmt, dienen diese Bezugnahmen lediglich dazu, die Vorrichtung oder die Vorrichtungen darzustellen, für welche Schutz mit den beigefügten Ansprüchen gesucht wird. Diese Beschreibung ist allgemein auf ein selektives Aufrufen von Agenten einer dritten Partei (3P) gerichtet. Einige Implementierungen sind auf einen selektiven Aufruf eines bestimmten 3P-Agenten durch einen automatisierten Assistenten gerichtet, um eine beabsichtigte Aktion zu erreichen, die durch den automatisierten Assistenten während eines dynamischen Dialogs zwischen dem automatisierten Assistenten und einem Anwender bestimmt ist. Bei einigen von diesen Implementierungen wird der bestimmte 3P-Agent mit einem Wert (mit Werten) für einen Parameter (Parameter) aufgerufen, die während des dynamischen Dialogs bestimmt sind; und/oder der bestimmte 3P-Agent wird aus einer Vielzahl von Kandidanten-3P-Agenten für einen Aufruf basierend auf dem (den) bestimmten Wert(en) für den Parameter (die Parameter) und/oder basierend auf anderen Kriterien ausgewählt. Bei einigen Versionen dieser Implementierungen ruft der automatisierte Assistent den bestimmten 3P-Agenten durch Senden einer 3P-Aufrufanfrage zum bestimmten 3P-Agenten auf, die den (die) bestimmten Wert(e) für den (die) Parameter enthält. Beispielsweise kann der automatisierte Assistent die 3P-Aufrufanfrage zum 3P-Agenten über ein oder mehrere Netzwerke senden und kann eine Schnittstelle mit dem 3P-Agenten unter Verwendung einer Anwendungsprogrammierschnittstelle (API) bilden.
-
Wenn der bestimmte 3P-Agent aufgerufen wird, erzeugt der bestimmte 3P-Agent 3P-Antwortinhalt, der verwendet werden kann, um eine Ausgabe zur Aufnahme im dynamischen Dialog zu erzeugen. Wenn die Aufrufanfrage den (die) bestimmten Wert(e) für den (die) Parameter enthält, kann der bestimmte 3P-Agent diesen (diese) Wert(e) beim Erzeugen des 3P-Antwortinhalts berücksichtigen. Dies kann ermöglichen, dass die beabsichtigte Aktion über den bestimmten 3P-Agenten schneller erreicht wird, was verschiedene Computer-Ressourcen einsparen kann (z. B. Netzwerkverkehr, der durch zusätzliche ”Wechsel” verbraucht wird, die bei Abwesenheit der Lieferung des Werts (der Werte) nötig sein können).
-
Darüber hinaus kann, wenn der bestimmte Wert (die bestimmten Werte) für den (die) Parameter verwendet wird (werden), um den bestimmten 3P-Agent auszuwählen, er sicherstellen, dass der ausgewählte bestimmte 3P-Agent die beabsichtigte Aktion basierend auf den bestimmten Werten durchführen kann. Beispielsweise kann der bestimmte Wert (können die bestimmten Werte) für einen Parameter (Parameter) mit einem entsprechenden Wert (entsprechenden Werten) für den Parameter (die Parameter) verglichen werden, der (die) für jeden einer Vielzahl von Kandidanten-3P-Agenten definiert ist (sind), die die beabsichtigte Aktion durchführen können – und nur der (die) 3P-Agent(en), dessen Wert (deren Werte) dem bestimmten Wert (den bestimmten Werten) entspricht (entsprechen), kann (können) zur Auswahl berücksichtigt werden. Dies kann das Risiko abschwächen, dass der zum Aufruf ausgewählte bestimmte 3P-Agent unfähig ist, die beabsichtigte Aktion durchzuführen, was verschiedene Computer-Ressourcen einsparen kann. Beispielsweise kann es Netzwerk- und/oder Prozessor-Ressourcen einsparen, die sonst durch einen anfänglichen fehlgeschlagenen Versuch verbraucht werden können, einen 3P-Agenten zu verwenden, um die beabsichtigte Aktion durchzuführen, dem dann durch Aufrufen eines alternativen 3P-Agenten bei einem weiteren Versuch gefolgt wird, die beabsichtigte Aktion durchzuführen.
-
In einigen Situationen kann (können) in Antwort auf einen Aufruf des bestimmten 3P-Agenten ein Wert (Werte) für einen Parameter (Parameter), der (die) mit einer Aufrufanfrage geliefert wird (werden), ermöglichen, dass der bestimmte 3P-Agent die beabsichtigte Aktion erreicht, ohne sich an einem weiteren Dialog mit dem Anwender zu beteiligen. In diesen Situationen kann der 3P-Agent einen Antwortinhalt liefern, der anzeigt, dass die beabsichtigte Aktion erreicht worden ist, und/oder der zusätzliche Information anzeigt, die auf ein Erreichen der beabsichtigten Aktion bezogen ist.
-
In einigen Situationen kann der dynamische Dialog in Reaktion auf einen Aufruf des bestimmten 3P-Agenten wenigstens temporär (aktuell oder effektiv) zum bestimmten 3P-Agenten transferiert bzw. weitergeleitet werden, so dass der 3P-Agent wenigstens temporär den Inhalt des dynamischen Dialogs ”lenkt bzw. steuert”. Beispielsweise kann eine Ausgabe, die auf dem 3P-Antwortinhalt basiert, bei einer Förderung des Dialogs zum Anwender geliefert werden und kann eine weitere Anwendereingabe in Reaktion auf den 3P-Antwortinhalt empfangen werden. Die weitere Anwendereingabe (oder eine Umwandlung davon) kann zum bestimmten 3P-Agenten geliefert werden. Der bestimmte 3P-Agent kann seine eigenen Semantikmaschinen und/oder andere Komponenten beim Erzeugen von weiterem Antwortinhalt verwenden, der verwendet werden kann, um eine weitere Ausgabe zum Liefern bei einer Förderung des dynamischen Dialogs zu erzeugen. Dieser allgemeine Prozess kann andauern, bis beispielsweise der 3P-Agent einen Antwortinhalt liefert, der den 3P-Agentendialog beendet (z. B. eine Antwort oder eine Auflösung anstelle einer Aufforderung), eine zusätzliche Anwenderschnittstelleneingabe des Anwenders den 3P-Agentendialog beendet (z. B. stattdessen eine Antwort von dem automatisierten Assistenten oder einem anderen 3P-Agenten aufruft), etc.
-
Wie es hierin beschrieben ist, kann der automatisierte Assistent in einigen Situationen noch als Vermittler dienen, wenn der Dialog effektiv zum 3P-Agenten transferiert wird. Beispielsweise kann beim Dienen als ein Vermittler, wo eine Eingabe in natürlicher Sprache eines Anwenders eine Spracheingabe ist, der automatisierte Assistent diese Spracheingabe in Text umwandeln, den Text (und optional Annotationen des Textes) zum 3P-Agenten liefern, einen 3P-Antwortinhalt vom 3P-Agenten empfangen und eine Ausgabe, die auf dem 3P-Antwortinhalt basiert, zur Präsentation zum Anwender liefern. Ebenso kann der automatisierte Assistent beispielsweise beim Dienen als ein Vermittler eine Anwendereingabe und/oder einen 3P-Antwortinhalt analysieren, um zu bestimmen, ob ein Dialog mit dem 3P-Agenten beendet werden sollte, zu einem alternativen 3P-Agenten weitergeleitet werden sollte, etc. Wie es auch hierin beschrieben ist, kann der Dialog in einigen Situationen aktuell zum 3P-Agenten weitergeleitet werden (ohne dass der automatisierte Assistent als ein Vermittler dient, wenn einmal weitergeleitet ist) und auf ein Auftreten von einer oder mehreren Bedingungen hin, wie beispielsweise eine Beendigung durch den 3P-Agenten (z. B. in Reaktion auf eine Beendigung bzw. Fertigstellung einer beabsichtigten Aktion über den 3P-Agenten), zurück zum automatisierten Assistenten weitergeleitet werden.
-
Hierin beschriebene Implementierungen ermöglichen, dass ein automatisierter Assistent einen geeigneten 3P-Agenten basierend auf einem Dialog mit einem Anwender auswählt und den 3P-Agenten aufruft, um eine beabsichtigte Aktion des Anwenders zu erreichen, die durch den Anwender im Dialog angezeigt wird. Diese Implementierungen können ermöglichen, dass ein Anwender einen 3P-Agenten über eine Interaktion mit einem automatisierten Assistenten engagiert, ohne dass es nötig ist, dass der Anwender ”Hotwords” kennt, um den 3P-Agenten explizit auszulösen, und/oder sogar ohne dass es nötig ist, dass der Anwender anfänglich weiß, dass der 3P-Agent existiert. Darüber hinaus ermöglichen Implementierungen, dass der automatisierte Assistent basierend auf dem Dialog mit dem Anwender Werte für verschiedene Parameter (die mit der beabsichtigten Aktion assoziiert sind) bestimmt und diese Parameter in Verbindung mit einem Aufrufen des 3P-Agenten zum 3P-Agenten weiterleitet. Darüber hinaus können diese Implementierungen ermöglichen, dass der Anwender eine allgemeine automatisierte Assistentenschnittstelle (z. B. eine akustische/sprachbasierte Schnittstelle und/oder eine graphische Schnittstelle) verwendet, um mit irgendeinem einer Vielzahl von ganz verschiedenen 3P-Agenten zu interagieren, die eine Durchführung von Aktionen quer über eine Vielzahl von ganz verschiedenen Dienstsektoren ermöglichen. Beispielsweise kann die allgemeine automatisierte Assistentenschnittstelle verwendet werden, um irgendeinen einer Vielzahl von 3P-Agenten zu engagieren, die eine beabsichtigte Aktion (beabsichtigte Aktionen) bei einem Dienstsektor ”Restaurantreservierung” durchführen, irgendeinen einer Vielzahl von 3P-Agenten zu engagieren, die eine beabsichtigte Aktion (beabsichtigte Aktionen) bei einem Dienstsektor ”Kaufen von professionellen Diensten” durchführen, irgendeinen einer Vielzahl von 3P-Agenten zu engagieren, die eine beabsichtigte Aktion (beabsichtigte Aktionen) bei einem Dienstsektor ”Kaufen von Reisediensten” durchführen, und irgendeinen einer Vielzahl von 3P-Agenten zu engagieren, die eine beabsichtigte Aktion (beabsichtigte Aktionen) bei einem Dienstsektor ”Interaktives Spiel” durchführen.
-
Wie er hierin verwendet ist, bezieht sich ein 3P-Agent auf eine oder mehrere Computervorrichtungen und/oder assoziierte Software, die durch eine Partei gemanagt ist, die separat von einer Partei ist, die einen automatisierten Assistenten managt. Der 3P-Agent ist konfiguriert, um (z. B. über ein Netzwerk über eine API) Inhalt vom automatisierten Assistenten zu empfangen. In Reaktion auf ein Empfangen des Inhalts erzeugt der 3P-Agent 3P-Antwortinhalt basierend auf dem empfangenen Inhalt und sendet den 3P-Antwortinhalt für die Lieferung einer Ausgabe, die auf dem 3P-Antwortinhalt basiert. Beispielsweise kann der 3P-Agent den 3P-Antwortinhalt zum automatisierten Assistenten zur Liefern einer Ausgabe durch den automatisierten Assistenten senden, die auf dem 3P-Antwortinhalt basiert. Ein 3P-Agent kann oft konfiguriert sein, um eine oder mehrere spezifizierte oder beabsichtigte Aktionen durchzuführen, wie beispielsweise: Buchen einer Restaurantreservierung; Bestellen von Essen; Kaufen von Karten für einen Film; Kaufen von Diensten; Anfragen von Diensten (z. B. Transport); Managen von Text, Email oder anderen elektronischen Kommunikationen eines Anwenders; Liefern einer Anleitung für eine Aufgabe eines Anwenders (z. B. Mischen eines Drinks, Fixieren eines undichten Wasserhahns); ein Beteiligen an einem interaktiven Spiel mit einem Anwender; etc.
-
Verschiedene Typen von Eingabe sind hierin beschrieben, die durch einen Anwender über eine Anwenderschnittstelleneingabevorrichtung (Anwenderschnittstelleneingabevorrichtungen) zu einem automatisierten Assistenten und/oder zu einem 3P-Agenten geliefert werden können. In einigen Fällen kann die Eingabe eine Eingabe in natürlicher Sprache sein, die eine freie Form ist, wie beispielsweise eine Texteingabe, die auf einer Anwenderschnittstelleneingabe basiert, die durch den Anwender über eine oder mehrere Anwenderschnittstelleneingabevorrichtungen erzeugt ist (z. B. basierend auf einer getippten bzw. maschinengeschriebenen Eingabe, die über eine physikalische oder virtuelle Tastatur geliefert ist, oder basierend auf einer gesprochenen Eingabe, die über ein Mikrophon geliefert ist). Wie sie hierin verwendet ist, ist eine Eingabe in freier Form eine Eingabe, die durch einen Anwender formuliert ist und die nicht auf eine Gruppe von Optionen beschränkt ist, die zur Auswahl durch den Anwender präsentiert ist (z. B. nicht auf eine Gruppe von Optionen beschränkt, die in einem Aufklappmenü präsentiert sind).
-
Bei einigen Implementierungen wird ein durch einen oder mehrere Prozessoren durchgeführtes Verfahren zur Verfügung gestellt und enthält: Empfangen einer Eingabe in natürlicher Sprache eines Anwenders, die zu einem automatisierten Assistenten gerichtet ist, als Teil eines dynamischen Dialogs zwischen dem Anwender und dem automatisierten Assistenten. Die Eingabe in natürlicher Sprache ist in freier Form und basiert auf einer Anwenderschnittstelleneingabe, die durch den Anwender über eine Anwenderschnittstelleneingabevorrichtung geliefert ist. Das Verfahren enthält weiterhin ein Auswählen einer beabsichtigten Aktion basierend auf einem Bestimmen, dass die Eingabe in natürlicher Sprache die beabsichtigte Aktion anzeigt. Die beabsichtigte Aktion wird aus einer Gruppe von potentiellen beabsichtigten Aktionen ausgewählt, die über den automatisierten Assistenten verfügbar sind und die mehrere Dienstsektoren überspannen. Das Verfahren enthält weiterhin ein Bestimmen, dass wenigstens ein obligatorischer Parameter, der in Assoziation mit der beabsichtigten Aktion gespeichert ist, in der Eingabe in natürlicher Sprache nicht spezifiziert ist. Das Verfahren enthält weiterhin, in Reaktion auf ein Bestimmen, dass der wenigstens eine obligatorische Parameter nicht spezifiziert ist, ein Erzeugen einer Aufforderung, die auf dem wenigstens einen obligatorischen Parameter basiert. Das Verfahren enthält weiterhin: ein Liefern der Aufforderung als Teil des dynamischen Dialogs und als eine Antwort auf die Eingabe in natürlicher Sprache; ein Empfangen einer zusätzlichen Eingabe in natürlicher Sprache, die durch den Anwender als Teil des dynamischen Dialogs in Reaktion auf die Aufforderung geliefert ist; ein Bestimmen eines Werts für den obligatorischen Parameter basierend auf der zusätzlichen Eingabe in natürlicher Sprache; und ein Auswählen eines bestimmten Agenten einer dritten Partei aus einer Gruppe von Agenten einer dritten Partei, die jeweils die beabsichtigte Aktion durchführen können, die durch die Eingabe in natürlicher Sprache angezeigt ist. Das Verfahren enthält weiterhin ein Senden einer Aufrufanfrage einer dritten Partei, die den Wert für den obligatorischen Parameter enthält. Das Senden erfolgt zu dem bestimmten Agenten der dritten Partei über eine oder mehrere Netzwerkschnittstellen und erfolgt ohne irgendein anderes Senden einer Aufrufanfrage einer dritten Partei zu irgendwelchen anderen Agenten einer dritten Partei der Gruppe von Agenten einer dritten Partei. Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Empfangen, über eine oder mehrere der Netzwerkschnittstellen, eines Antwortinhalts vom Agenten der dritten Partei in Reaktion auf das Senden der Aufrufanfrage der dritten Partei; und ein Liefern, zur Präsentation zum Anwender als Teil des dynamischen Dialogs, einer auf dem Antwortinhalt basierenden Ausgabe.
-
Diese und andere Implementierungen einer hierin offenbarten Technologie können optional eines oder mehrere der folgenden Merkmale enthalten.
-
Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Empfangen einer weiteren Eingabe, die durch den Anwender in Reaktion auf die Ausgabe geliefert ist, die auf dem Antwortinhalt des Agenten der dritten Partei basiert; und ein Senden, zum Agenten der dritten Partei über eine oder mehrere der Netzwerkschnittstellen, eines Inhalts, der auf der weiteren Eingabe basiert. Bei einigen dieser Implementierungen ist die weitere Eingabe eine Spracheingabe und enthält das Verfahren weiterhin ein Umwandeln der Spracheingabe in Text und ein Aufnehmen von wenigstens etwas von dem Text im Inhalt. Bei einigen Versionen dieser Implementierungen enthält das Verfahren weiterhin: ein Empfangen, über eine oder mehrere der Netzwerkschnittstellen, eines weiteren Antwortinhalts vom Agenten der dritten Partei in Reaktion auf ein Senden des Inhalts; und ein Liefern, zur Präsentation zum Anwender als Teil des dynamischen Dialogs, einer weiteren auf dem weiteren Antwortinhalt basierenden Ausgabe.
-
Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Empfangen einer weiteren Eingabe, die durch den Anwender in Reaktion auf die Ausgabe geliefert ist, die auf dem Antwortinhalt des Agenten der dritten Partei basiert; ein Bestimmen, ob die weitere Eingabe einen Wunsch anzeigt, eine Interaktion mit dem Agenten der dritten Partei aufzuhören; und in Reaktion auf ein Bestimmen, dass die weitere Eingabe nicht einen Wunsch anzeigt, eine Interaktion mit dem Agenten der dritten Partei aufzuhören: ein Senden, zum Agenten der dritten Partei über eine oder mehrere der Netzwerkschnittstellen, eines Inhalts, der auf der weiteren Eingabe basiert.
-
Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Empfangen einer weiteren Eingabe, die durch den Anwender in Reaktion auf entweder die Ausgabe oder eine weitere Ausgabe, die auf einem Inhalt basiert, der durch den Agenten der dritten Partei geliefert ist; ein Bestimmen, dass die weitere Eingabe einen Wunsch anzeigt, mit einem weiteren Agenten einer dritten Partei zu interagieren; und in Reaktion auf ein Bestimmen, dass die weitere Eingabe einen Wunsch anzeigt, mit einem weiteren Agenten einer dritten Partei zu interagieren: ein Senden, zu einem alternativen Agenten einer dritten Partei der Gruppe einer dritten Partei, einer zusätzlichen Aufrufanfrage einer dritten Partei, die den Wert für den obligatorischen Parameter enthält. Bei einigen von diesen Implementierungen enthält das Verfahren weiterhin: ein Bestimmen eines zusätzlichen Werts für einen zusätzlichen Parameter der beabsichtigten Aktion basierend auf einer Anwendereingabe während einer Beteiligung des Agenten der dritten Partei am dynamischen Dialog; und ein Aufnehmen des zusätzlichen Werts für den zusätzlichen Parameter in der zusätzlichen Aufrufanfrage einer dritten Partei.
-
Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Bestimmen eines zusätzlichen Werts für einen nicht nachgesuchten optionalen Parameter der beabsichtigten Aktion basierend auf der Eingabe in natürlicher Sprache oder der zusätzlichen Eingabe in natürlicher Sprache; und ein Aufnehmen des zusätzlichen Werts für den zusätzlichen Parameter in der Aufrufanfrage einer dritten Partei. Bei einigen von diesen Implementierungen enthält ein Auswählen des bestimmten Agenten einer dritten Partei aus der Gruppe von Agenten einer dritten Partei: ein Auswählen des bestimmten Agenten einer dritten Partei basierend auf dem Wert und dem zusätzlichen Wert übereinstimmend mit entsprechenden Werten, die, für den Agenten einer dritten Partei, für den obligatorischen Parameter und den zusätzlichen Parameter definiert sind. Bei einigen Versionen dieser Implementierungen enthält ein Auswählen des bestimmten Agenten einer dritten Partei aus der Gruppe von Agenten einer dritten Partei weiterhin: ein Eliminieren eines zusätzlichen Agenten einer dritten Partei aus der Auswahl basierend auf dem Wert und dem zusätzlichen Wert, die nicht mit entsprechenden Werten übereinstimmen, die, für den zusätzlichen Agenten einer dritten Partei, für den obligatorischen Parameter und den zusätzlichen Parameter definiert sind. Der zusätzliche Agent einer dritten Partei ist von der Gruppe von Agenten einer dritten Partei. Ein Auswählen des bestimmten Agenten einer dritten Partei kann bei einigen von diesen Implementierungen erfolgen, ohne dem Anwender eine Ausgabe zur Verfügung zu stellen, die explizit nachsucht, dass der Anwender zwischen dem Agenten einer dritten Partei und einem oder mehreren zusätzlichen Agenten einer dritten Partei der Gruppe auswählt.
-
Bei einigen Implementierungen wird ein durch einen oder mehrere Prozessoren durchgeführtes Verfahren zur Verfügung gestellt und enthält, als Teil eines dynamischen Dialogs zwischen einem Anwender und einem automatisierten Assistenten, der durch einen oder mehrere der Prozessoren implementiert ist: ein Empfangen einer Eingabe in natürlicher Sprache eines Anwenders, die zum automatisierten Assistenten gerichtet ist, als Teil des dynamischen Dialogs, wobei die Eingabe in natürlicher Sprache in freier Form ist und auf einer Anwenderschnittstelleneingabe basiert, die durch den Anwender über eine Anwenderschnittstelleneingabevorrichtung geliefert ist; ein Auswählen einer beabsichtigten Aktion basierend auf einem Bestimmen, dass die Eingabe in natürlicher Sprache die beabsichtigte Aktion anzeigt, wobei die beabsichtigte Aktion aus einer Gruppe von potentiellen beabsichtigten Aktionen ausgewählt wird, die mehrere Dienstsektoren überspannen; ein Identifizieren einer Gruppe von Agenten einer dritten Partei, die jeweils die beabsichtigte Aktion durchführen können, die durch die Eingabe in natürlicher Sprache angezeigt ist, und die jeweils die beabsichtigte Aktion durchführen können; ein Erzeugen einer Aufforderung, die auf einem Parameter basiert, der in Assoziation mit der beabsichtigten Aktion gespeichert ist und der in der Eingabe in natürlicher Sprache nicht spezifiziert ist, wobei die Aufforderung nicht explizit irgendeinen der Agenten einer dritten Partei der Gruppe identifiziert; ein Liefern der Aufforderung als Teil des dynamischen Dialogs und als eine Antwort auf die Eingabe in natürlicher Sprache; ein Empfangen einer zusätzlichen Eingabe in natürlicher Sprache, die durch den Anwender als Teil des dynamischen Dialogs in Reaktion auf die Aufforderung geliefert ist; ein Bestimmen eines Werts für den Parameter basierend auf der zusätzlichen Eingabe in natürlicher Sprache; ein Eliminieren eines Agenten einer dritten Partei von der Gruppe von Agenten einer dritten Partei, um eine Untergruppe zu bilden, wobei das Eliminieren auf dem Wert basiert, der nicht mit einem entsprechenden Wert übereinstimmt, der für den Parameter für den Agenten einer dritten Partei definiert ist; ein Auswählen eines bestimmten Agenten einer dritten Partei aus der Untergruppe; und ein Senden einer Aufrufanfrage einer dritten Partei, die den Wert für den Parameter enthält. Das Senden erfolgt nur zum ausgewählten bestimmten Agenten einer dritten Partei über eine oder mehrere Netzwerkschnittstellen.
-
Diese und andere Implementierungen einer hierin offenbarten Technologie können optional eines oder mehrere der folgenden Merkmale enthalten.
-
Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Empfangen, über eine oder mehrere der Netzwerkschnittstellen, eines Antwortinhalts vom Agenten einer dritten Partei in Reaktion auf das Senden der Aufrufanfrage einer dritten Partei; und ein Liefern, zur Präsentation zum Anwender als Teil des dynamischen Dialogs, einer auf dem Antwortinhalt basierenden Ausgabe. Bei einigen dieser Implementierungen enthält das Verfahren weiterhin: ein Empfangen einer weiteren Eingabe, die durch den Anwender in Reaktion auf die Ausgabe geliefert ist, die auf dem Antwortinhalt des Agenten einer dritten Partei basiert; und ein Senden, zum Agenten einer dritten Partei über eine oder mehrere der Netzwerkschnittstellen, eines Inhalts, der auf der weiteren Eingabe basiert. Bei einigen dieser Implementierungen ist die weitere Eingabe eine Spracheingabe und enthält das Verfahren weiterhin: ein Umwandeln der Spracheingabe in Text und ein Aufnehmen von wenigstens etwas vom Text im Inhalt.
-
Bei einigen Implementierungen wird ein durch einen oder mehrere Prozessoren durchgeführtes Verfahren zur Verfügung gestellt und enthält: ein Empfangen, durch einen lokalen Agenten über eine oder mehrere Netzwerkschnittstellen, einer ersten Eingabe in natürlicher Sprache, die durch eine Client-Vorrichtung eines Anwenders gesendet ist. Die erste Eingabe in natürlicher Sprache ist in freier Form und ist zu einer Schnittstelle eines automatisierten Assistenten gerichtet, die durch die Client-Vorrichtung implementiert ist. Das Verfahren enthält weiterhin ein Bestimmen, durch den lokalen Agenten, dass die erste Eingabe in natürlicher Sprache eine erste beabsichtigte Aktion anzeigt, die zu einem ersten Dienstsektor gerichtet ist. Das Verfahren enthält weiterhin, durch den lokalen Agenten über eine oder mehrere der Netzwerkschnittstellen: ein Interagieren mit dem Anwender über die Schnittstelle für einen automatisierten Assistenten der Client-Vorrichtung, um Werte für alle ersten obligatorischen Parameter aufzulösen, die in Assoziation mit der ersten beabsichtigten Aktion gespeichert sind. Das Verfahren enthält weiterhin ein Auswählen, durch den lokalen Agenten, eines bestimmten Agenten einer dritten Partei aus einer Gruppe von Agenten einer dritten Partei, die jeweils die beabsichtigte Aktion durchführen können, die durch die erste Eingabe in natürlicher Sprache angezeigt ist. Das Verfahren enthält weiterhin, durch den lokalen Agenten nachfolgend zu einem Auflösen der Werte für die ersten obligatorischen Parameter: ein Aufrufen des Agenten einer dritten Partei basierend auf den aufgelösten Werten für die ersten obligatorischen Parameter; und ein Ermöglichen von Interaktionen zwischen der Client-Vorrichtung und dem Agenten einer dritten Partei, die über die Schnittstelle für einen automatisierten Assistenten erfolgen und die durch den Agenten einer dritten Partei gesteuert bzw. gelenkt werden.
-
Bei einigen Implementierungen enthält das Verfahren weiterhin: ein Empfangen, durch den lokalen Agenten über eine oder mehrere der Netzwerkschnittstellen, einer zweiten Eingabe in natürlicher Sprache von der Client-Vorrichtung eines Anwenders, wobei die zweite Eingabe in natürlicher Sprache in freier Form ist und zur Schnittstelle für einen automatisierten Assistenten gerichtet ist; ein Bestimmen, durch den lokalen Agenten, dass die zweite Eingabe in natürlicher Sprache in freier Form eine zweite beabsichtigte Aktion anzeigt, die zu einem zweiten Dienstsektor gerichtet ist, wobei der zweite Dienstsektor ganz verschieden vom ersten Dienstsektor ist; durch den lokalen Agenten über eine oder mehrere der Netzwerkschnittstellen ein Interagieren mit dem Anwender über die Schnittstelle für einen automatisierten Assistenten der Client-Vorrichtung, um zweite Werte für alle zweiten obligatorischen Parameter aufzulösen, die in Assoziation mit der zweiten beabsichtigten Aktion gespeichert sind; ein Auswählen durch den lokalen Agenten, eines zusätzlichen bestimmten Agenten einer dritten Partei aus einer Gruppe von zusätzlichen Agenten einer dritten Partei, die jeweils die zweite beabsichtigte Aktion durchführen können, die durch die Eingabe in natürlicher Sprache angezeigt ist, wobei die Gruppe von zusätzlichen Agenten einer dritten Partei ganz verschieden von der Gruppe von Agenten einer dritten Partei ist; und durch den lokalen Agenten nachfolgend zu einem Auflösen der zweiten Werte für die zweiten obligatorischen Parameter: ein Aufrufen des zusätzlichen Agenten einer dritten Partei basierend auf den aufgelösten zweiten Werten für die zweiten obligatorischen Parameter und ein Ermöglichen von Interaktionen zwischen der Client-Vorrichtung und dem zusätzlichen Agenten einer dritten Partei, die über die Schnittstelle für einen automatisierten Assistenten erfolgen und die durch den zusätzlichen Agenten einer dritten Partei gelenkt bzw. gesteuert werden.
-
Bei einigen Implementierungen ist ein durch einen oder mehrere Prozessoren durchgeführtes Verfahren zur Verfügung gestellt und enthält: ein Empfangen einer anfänglichen Spracheingabe, die durch einen Anwender über eine Client-Vorrichtung geliefert ist; ein Durchführen einer Sprache-in-Text-Umwandlung, um die anfängliche Spracheingabe in anfänglichen Text umzuwandeln; ein Bestimmen einer beabsichtigten Aktion basierend auf dem anfänglichen Text; ein Identifizieren eines obligatorischen Parameters, der als obligatorisch für die beabsichtigte Aktion gespeichert ist; ein Bestimmen, dass dem anfänglichen Text eine Spezifikation von irgendeinem Wert für den obligatorischen Parameter fehlt; in Reaktion auf ein Bestimmen, dass dem anfänglichen Text eine Spezifikation von irgendeinem Wert für den obligatorischen Parameter fehlt: ein Erzeugen einer Aufforderung in natürlicher Sprache basierend auf dem obligatorischen Parameter und ein Liefern der Aufforderung in natürlicher Sprache als eine Antwort auf die anfängliche Spracheingabe, wobei die Aufforderung zur Präsentation zum Anwender über eine Anwenderschnittstellenausgabevorrichtung der Client-Vorrichtung geliefert wird; ein Empfangen einer zusätzlichen Eingabe in natürlicher Sprache, die durch den Anwender in Reaktion auf ein Liefern der Aufforderung in natürlicher Sprache geliefert ist; ein Bestimmen eines Werts für den Parameter basierend auf der zusätzlichen Eingabe in natürlicher Sprache; ein Auswählen eines bestimmten Agenten einer dritten Partei einer Gruppe von Agenten einer dritten Partei, die die beabsichtigte Aktion durchführen können; ein Senden einer Aufrufanfrage einer dritten Partei, die den Wert für den obligatorischen Parameter enthält, wobei das Senden zum bestimmten Agenten einer dritten Partei über eine oder mehrere Netzwerkschnittstellen erfolgt; ein Empfangen von Antwortinhalt vom Agenten einer dritten Partei in Reaktion auf ein Senden der beabsichtigten Aktion und des Werts, wobei das Empfangen über eine oder mehrere der Netzwerkschnittstellen erfolgt; und ein Liefern einer Ausgabe, die auf dem Antwortinhalt basiert, zur Präsentation zum Anwender; ein Empfangen einer weiteren zusätzlichen Eingabe in natürlicher Sprache, die durch den Anwender in Reaktion auf ein Liefern der Ausgabe geliefert ist; ein Durchführen einer zusätzlichen Sprache-zu-Text-Umwandlung, um die weitere zusätzliche Eingabe in natürlicher Sprache in weiteren Text umzuwandeln; und ein Senden des weiteren Textes zum bestimmten Agenten einer dritten Partei.
-
Bei einigen Implementierungen ist ein durch einen oder mehrere Prozessoren durchgeführtes Verfahren zur Verfügung gestellt und enthält: ein Empfangen, über eine oder mehrere Netzwerkschnittstellen, einer Eingabe, die durch eine Client-Vorrichtung gesendet ist, wobei die Eingabe eine Anwendereingabe in natürlicher Sprache in freier Form ist; ein Bestimmen einer beabsichtigten Aktion basierend auf der Eingabe; ein Identifizieren eines obligatorischen Parameters, der als obligatorisch für die beabsichtigte Aktion gespeichert ist; ein Bestimmen, dass der Eingabe eine Spezifikation von irgendeinem Wert für den obligatorischen Parameter fehlt; in Reaktion auf ein Bestimmen, dass dem anfänglichen Text eine Spezifikation von irgendeinem Wert für den obligatorischen Parameter fehlt: ein Erzeugen einer Aufforderung, die auf dem obligatorischen Parameter basiert und die keine Eingabe an einem optionalen Parameter erbittet, der als optional für die beabsichtigte Aktion gespeichert ist, und ein Senden, zur Client-Vorrichtung, der Aufforderung in natürlicher Sprache als eine Antwort auf die Eingabe; ein Empfangen, über eine oder mehrere der Netzwerkschnittstellen, einer zusätzlichen Eingabe, die durch die Client-Vorrichtung in Reaktion auf die Aufforderung gesendet ist, wobei die zusätzliche Eingabe eine Anwendereingabe in natürlicher Sprache in freier Form ist; ein Bestimmen eines Werts für den Parameter basierend auf der zusätzlichen Eingabe in natürlicher Sprache; ein Bestimmen eines zusätzlichen Werts für den optionalen Parameter basierend auf der zusätzlichen Eingabe in natürlicher Sprache; ein Auswählen eines bestimmten Agenten einer dritten Partei, der die beabsichtigte Aktion durchführen kann, basierend auf sowohl dem Wert als auch dem zusätzlichen Wert; und ein Senden einer Aufrufanfrage einer dritten Partei, die sowohl den Wert als auch den zusätzlichen Wert enthält. Das Senden erfolgt zu dem bestimmten Agenten einer dritten Partei über eine oder mehrere der Netzwerkschnittstellen.
-
Zusätzlich enthalten einige Implementierungen einen oder mehrere Prozessoren von einer oder mehreren Computervorrichtungen, wobei der eine oder die mehreren Prozessoren betreibbar sind, um Anweisungen auszuführen, die in einem assoziierten Speicher gespeichert sind, und wobei die Anweisungen konfiguriert sind, um eine Durchführung von irgendeinem der vorgenannten Verfahren zur veranlassen. Einige Implementierungen enthalten auch ein oder mehrere nichtflüchtige computerlesbare Speichermedium, die Computeranweisungen speichern, die durch einen oder mehrere Prozessoren ausführbar sind, um irgendeines der vorgenannten Verfahren durchzuführen.
-
Es sollte erkannt werden, dass alle Kombinationen der vorangehenden Konzepte und der zusätzlichen Konzepte, die hierin detaillierter beschrieben sind, derart angesehen werden, dass sie ein Teil des hierin offenbarten Gegenstands sind. Beispielsweise sind alle Kombinationen eines beanspruchten Gegenstands, der am Ende dieser Offenbarung erscheint, derart anzusehen, dass sie ein Teil des hierin offenbarten Gegenstands sind.
-
Kurze Beschreibung der Zeichnungen
-
1 ist ein Blockdiagramm einer beispielhaften Umgebung, in welcher Implementierungen, die hierin offenbart sind, implementiert sein können.
-
2A ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren gemäß hierin offenbarten Implementierungen darstellt.
-
2B ist ein Ablaufdiagramm, das einige Implementierungen der Blöcke des Ablaufdiagramms der 2A detaillierter darstellt.
-
3 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren darstellt, das durch einen Agenten einer dritten Partei durchgeführt werden kann, gemäß hierin offenbarten Implementierungen.
-
4, 5 und 6 stellen jeweils einen Anwender, eine Client-Vorrichtung und einen beispielhaften Dialog zwischen dem Anwender, einem automatisierten Assistenten, der mit der Client-Vorrichtung assoziiert ist, und einem Agenten einer dritten Partei gemäß hierin offenbarten Implementierungen dar.
-
7 stellt eine zusätzliche Client-Vorrichtung und einen beispielhaften Dialog zwischen einem Anwender der Client-Vorrichtung, einem mit der Client-Vorrichtung assoziierten automatisierten Assistenten und einem Agenten einer dritten Partei gemäß hierin offenbarten Implementierungen dar.
-
8 stellt eine beispielhafte Architektur einer Computervorrichtung dar.
-
Detaillierte Beschreibung
-
In einigen Situationen muss ein Anwender, um einen bestimmten Agenten einer dritten Partei (3P) über einen automatisierten Assistenten aufzurufen, eine Eingabe liefern, die diesen bestimmten 3P-Agenten explizit aufruft. Beispielsweise muss der Anwender, um einen 3P-Agenten ”Kaufen einer Karte für einen Film”, der ”Hypothetischer Agent” genannt wird, aufzurufen, wissen, ”ein Hotword/eine Phrase” für den 3P-Agenten zu sprechen, wie beispielsweise ”Bestellen von Karten mit hypothetischem Agent”. Solche expliziten Aufrufe erfordern, dass der Anwender am Anfang weiß, welcher 3P-Agent am geeignetsten für eine beabsichtigte Aktion des Anwenders ist, und der Anwender sendet direkt zu diesem 3P-Agenten für eine versuchte Auflösung der beabsichtigten Aktion über eine Interaktion mit dem 3P-Agenten.
-
Jedoch kann es oft der Fall sein, dass der 3P-Agent, der durch den Anwender direkt aufgerufen ist, die beabsichtigte Aktion nicht auf eine Weise durchführen kann, die durch den Anwender erwünscht ist. Dies kann Anwender- und Computer-Ressourcen verschwenden, da der Anwender zuerst mit dem 3P-Agenten interagieren muss, bestimmen muss, dass der 3P-Agent nicht geeignet ist, dann versuchen muss, die beabsichtigte Aktion über eine Interaktion mit einem anderen 3P-Agenten durchzuführen. Darüber hinaus kann es oft der Fall sein, dass der Anwender in Unkenntnis über die Verfügbarkeit und verschiedenen 3P-Agenten ist, und für verschiedene Schnittstellen für einen automatisierten Assistenten kann es nicht praktikabel und/oder unerwünscht sein, explizit eine Liste von verfügbaren 3P-Agenten und assoziierter Funktionalität zu einem Anwender in der oft beschränkten Schnittstelle für einen automatisierten Assistenten zu liefern. Beispielsweise sind einige automatisierte Assistenten ”Nur für Sprache”, und es kann nicht praktikabel und/oder erwünscht sein, dem Anwender ”Eine Liste vorzulesen” von 3P-Agenten und assoziierter Funktionalität.
-
Verschiedene Implementierungen ermöglichen, dass sich ein Anwender an einem Dialog mit einem automatisierten Assistenten beteiligt, und durch diesen Dialog kann der automatisierte Assistent: eine beabsichtigte Aktion des Anwenders bestimmen; einen Wert (Werte) für einen Parameter (Parameter) bestimmen, der (die) in Assoziation mit der beabsichtigten Aktion gespeichert ist (sind); einen bestimmten 3P-Agenten auszuwählen, der die beabsichtigte Aktion erreichen kann, basierend auf den bestimmten Werten; und den 3P-Agenten mit den bestimmten Werten aufzurufen. Demgemäß können, anstelle eines Erforderns, dass der Anwender mit einem expliziten Aufruf eines 3P-Agenten beginnt, hierin offenbarte Implementierungen stattdessen an einem Dialog mit einem Anwender im Voraus von einem Aufrufen von irgendeinem 3P-Agenten teilnehmen, und nur einen bestimmten 3P-Agenten nach einem Bestimmen des 3P-Agenten aufrufen, die beabsichtigte Aktion mit den bestimmten Werten erreichen. Diese und andere Implementierungen können die Verschwendung von menschlichen und computermäßigen Ressourcen lindern, der begegnet werden kann, wenn ein Anwender einen 3P-Agenten explizit aufruft, der sich als der falsche 3P-Agent herausstellt. Darüber hinaus kann der automatisierte Assistent beim Aufrufen des 3P-Agenten die bestimmten Werte zum 3P-Agenten liefern und die Notwendigkeit für den 3P-Agenten vermeiden, diese Werte zu erbitten. Dies kann ermöglichen, dass die beabsichtigte Aktion über den bestimmten 3P-Agenten schneller erreicht wird, was verschiedene Computer-Ressourcen einsparen kann (z. B. Netzwerkverkehr, der durch zusätzliche ”Runden” verbraucht wird, die in der Abwesenheit des Lieferns des (der) Werts (Werte) nötig sein könnten).
-
Ein Aufrufen eines 3P-Agenten, wie es hierin verwendet ist, kann sich auf ein Transferieren bzw. Weiterleiten (aktuell oder effektiv) eines Dialogs eines automatisierten Assistenten zum 3P-Agenten beziehen. Wenn der Dialog zum 3P-Agenten transferiert wird, ”lenkt bzw. steuert” der 3P-Agent den Inhalt des Dialogs und übernimmt der automatisierte Assistent in Reaktion auf eine oder mehrere Bedingungen, wie beispielsweise eine Beendigung durch den 3P-Agenten (z. B. in Reaktion auf eine Beendigung einer beabsichtigten Aktion über den 3P-Agenten), eine Beendigung durch den Anwender (z. B. in Reaktion darauf, dass der Anwender eine Eingabe liefert, die einen Wunsch anzeigt, die 3P-Agenten-Session zu beenden), eine Auszeit, etc. Ein Aufrufen eines 3P-Agenten, wie es hierin verwendet ist, kann zusätzlich oder alternativ eine Netzwerkkommunikation mit dem 3P-Agenten enthalten, um die beabsichtigte Aktion zu erreichen, ohne dass der 3P-Agent den Dialog direkt lenkt. Beispielsweise dort, wo Werte für alle obligatorischen Parameter einer beabsichtigten Aktion durch den automatisierten Assistenten bestimmt sind, kann der automatisierte Assistent diese Werte zum 3P-Agenten kommunizieren, um zu veranlassen, dass der 3P-Agent die beabsichtigte Aktion durchführt, einen 3P-Antwortinhalt vom 3P-Agenten empfangen, der anzeigt, dass die beabsichtigte Aktion durchgeführt wurde, und/oder Details der Durchführung der beabsichtigten Aktion enthält, und kann dann eine Ausgabe zum Anwender liefern, die auf dem empfangenen 3P-Antwortinhalt basiert (z. B. die bestätigt, dass die beabsichtigte Aktion durchgeführt wurde).
-
Als ein Beispiel der obigen und von anderen Implementierungen, die hierin offenbart sind, soll angenommen sein, dass ein Anwender wünscht, eine beabsichtigte Aktion eines Kaufens von zwei Karten für Erwachsene für einen Film für den ”Film A” durchzuführen. Anstatt dass der Anwender anfänglich einen 3P-Agenten spezifizieren muss, über welchen die beabsichtigte Aktion erreicht werden kann, kann der Anwender stattdessen eine Eingabe in natürlicher Sprache von ”Kaufe 2 Karten für einen Film für den Film A” liefern. Der automatisierte Assistent kann eine solche Eingabe parsen und die geparste Eingabe auf eine beabsichtigte Aktion von ”Kaufen von Karten für einen Film” mit einem Wert von ”2” für den Parameter von ”Anzahl von Karten für Erwachsene” und einem Wert von ”Film A” (oder einem assoziierten Identifizierer) für den Parameter von ”Filmtitel” abbilden.
-
Der automatisierte Assistent kann weiterhin einen zusätzlichen obligatorischen Parameter bestimmen, der für die beabsichtigte Aktion ”Kaufen einer Karte für einen Film” definiert ist (z. B. in einer API definiert), wie beispielsweise einen Parameter von ”Theaterstandort” – und bestimmen, dass der zusätzliche obligatorische Parameter durch die Eingabe in natürlicher Sprache nicht spezifiziert ist. In Reaktion darauf kann der automatisierte Assistent den Anwender mit ”Welches Theater” auffordern, eine Antwort ”Baxter Avenue” empfangen, dann ”Baxter Avenue Theater” (oder einen assoziierten Identifizierer) als einen Wert für diesen Parameter bestimmen.
-
Der automatisierte Assistent kann weiterhin Kandidaten-3P-Agenten identifizieren, die die beabsichtigte Aktion ”Kaufen einer Karte für einen Film” durchführen und basierend auf Daten, die durch jeden der 3P-Agenten geliefert sind, bestimmen, ob jeder der 3P-Agenten diese Aktion für den (die) speziellen bestimmten Wert(e) für den Parameter (die Parameter) erreichen kann (z. B. verkauft der 3P-Agent, der berücksichtigt wird, Karten für ”Baxter Avenue” und/oder hat er Karten für den ”Film A” für dieses Theater verfügbar). Die Daten, die durch jeden der 3P-Agenten geliefert sind, können statisch und/oder dynamisch sein. Wenn sie dynamisch sind, können die 3P-Agenten periodisch (oder in einem anderen regelmäßigen oder nicht regelmäßigen Intervall) upgedatete Daten zur Berücksichtigung durch den automatisierten Assistenten liefern und/oder der automatisierte Assistent kann (z. B. über ein Netzwerk über die API) die 3P-Agenten während des Verlaufs eines Dialogs beschäftigen bzw. engagieren, um bestimmte Live-Daten zur Berücksichtigung zu erhalten. In einigen Situationen kann der automatisierte Assistent einen der 3P-Agenten deterministisch auswählen, die die beabsichtigte Aktion für den (die) speziellen bestimmten Wert(e) erreichen können (z. B. wenn er der einzige Agent ist oder wenn er eine Auswahl von einigen ist und durch den Anwender stark bevorzugt ist) – und eine Aufrufanfrage zum ausgewählten 3P-Agenten zusammen mit dem (den) bestimmten Wert(en) senden. In einigen anderen Situationen, in welchen mehrere 3P-Agenten die beabsichtigte Aktion mit dem (den) speziellen bestimmten Wert(en) erreichen können, kann der automatisierte Assistent dem Anwender eine Auswahl zwischen wenigstens einigen von diesen präsentieren (z. B. ”Möchtest du den 3P-Agenten 1 oder den 3P-Agenten 2 verwenden”). In einigen von diesen anderen Situationen kann der automatisierte Assistent dem Anwender zusätzlich oder alternativ einen Wert (Werte) präsentieren, der (die) spezifisch für die präsentierten 3P-Agenten ist (sind), und der (die) durch den Anwender nicht spezifiziert worden ist (sind), um bei der Anwenderauswahl zu helfen (z. B. Preis für Karten für jeden 3P-Agenten, Anwenderbewertungen für jeden Agenten). Darüber hinaus kann in einigen von diesen anderen Situationen, welche 3P-Agenten (von mehreren 3P-Agenten, die die beabsichtigte Aktion mit dem (den) bestimmten Wert(en) erreichen können) tatsächlich zum Präsentieren zum Anwender als auch Wahlen ausgewählt werden, auf einem Wert (Werten) basieren, der (die) für diese 3P-Agenten spezifisch ist (sind) und der (die) durch den Anwender nicht spezifiziert worden ist (sind). Beispielsweise dort, wo ein Wert für einen Preisparameter durch den Anwender nicht spezifiziert worden ist, kann er verwendet werden. Ebenso können beispielsweise Bewertungen des Anwenders und/oder eines anderen Anwenders (von anderen Anwendern) für die 3P-Agenten verwendet werden.
-
Bei einigen Implementierungen können Interaktionen eines Anwenders mit dem 3P-Agenten und mit dem automatisierten Assistenten über eine allgemeine Schnittstelle für einen automatisierten Assistenten erfolgen. Beispielsweise können für eine sprachbasierte Schnittstelle für einen automatisierten Assistenten die Interaktionen mit sowohl dem automatisierten Assistenten als auch dem 3P-Agenten über eine sprachbasierte Interaktion erfolgen (obwohl die ”Sprache” bzw. ”Stimme” einer gelieferten Ausgabe zwischen den beiden variieren kann). Ebenso kann beispielsweise für eine graphische Schnittstelle für einen automatisierten Assistenten der Anwender innerhalb derselben Dialogschnittstelle während Interaktionen mit sowohl dem automatisierten Assistenten als auch dem 3P-Agenten bleiben (obwohl graphische Symbole und/oder andere Zeichen anzeigen können, wenn der 3P-Agent aufgerufen wird). Dies kann ermöglichen, dass der Anwender mit einer Vielfalt von 3P-Agenten interagiert und/oder verschiedene beabsichtigte Aktionen quer über eine Vielfalt von Dienstsektoren erreicht, ohne dass es nötig ist, dass der Anwender zwischen mehreren Schnittstellen umschaltet.
-
Wendet man sich nun der 1 zu, ist eine beispielhafte Umgebung dargestellt, in welcher hierin offenbarte Techniken implementiert werden können. Die beispielhafte Umgebung enthält eine Client-Vorrichtung 106, einen automatisierten Assistenten 110 und eine Vielzahl von Agenten einer dritten Partei (3P) 140a–n. Die Client-Vorrichtung 106 kann beispielsweise eine alleinstehende sprachaktivierte Lautsprechervorrichtung sein, eine Desktop-Computervorrichtung, eine Laptop-Computervorrichtung, eine Tablet-Computervorrichtung, eine Mobiltelefon-Computervorrichtung, eine Computervorrichtung eines Fahrzeugs des Anwenders (z. B. ein Kommunikationssystem innerhalb eines Fahrzeugs, ein Unterhaltungssystem innerhalb eines Fahrzeugs, ein Navigationssystem innerhalb eines Fahrzeugs), und/oder ein tragbares Gerät des Anwenders, das eine Computervorrichtung enthält (z. B. eine Uhr des Anwenders mit einer Computervorrichtung, eine Brille des Anwenders mit einer Computervorrichtung, eine Computervorrichtung für virtuelle oder erweiterte Realität). Zusätzliche und/oder alternative Client-Vorrichtungen können zur Verfügung gestellt werden.
-
Obwohl der automatisierte Assistent 110 in 1 als separat von der Client-Vorrichtung 106 dargestellt ist, kann oder können bei einigen Implementierungen alles oder Aspekte des automatisierten Assistenten 110 durch die Client-Vorrichtung 106 implementiert sein. Beispielsweise kann bei einigen Implementierungen eine Eingabeverarbeitungsmaschine 112 durch die Client-Vorrichtung 106 implementiert sein. Bei Implementierungen, bei welchen ein oder mehrere (z. B. alle) Aspekte des automatisierten Assistenten 110 durch eine oder mehrere Computervorrichtungen entfernt von der Client-Vorrichtung 106 implementiert sind, kommunizieren die Client-Vorrichtung 106 und diese Aspekte des automatisierten Assistenten 110 über ein oder mehrere Netzwerke, wie beispielsweise ein Weitverkehrsnetz (WAN) (z. B. das Internet).
-
Obwohl nur eine Client-Vorrichtung 106 in Kombination mit dem automatisierten Assistenten 110 dargestellt ist, kann der automatisierte Assistent 110 bei vielen Implementierungen entfernt sein und kann eine Schnittstelle mit jeder einer Vielzahl von Client-Vorrichtungen von mehreren Anwendern bilden. Beispielsweise kann der automatisierte Assistent 110 Kommunikationen mit jeder der mehreren Vorrichtungen über unterschiedliche Sessions managen und kann mehrere Sessions parallel managen. Beispielsweise kann der automatisierte Assistent 110 bei einigen Implementierungen als ein Cloud-basierter Dienst implementiert sein, der eine Cloud-Infrastruktur verwendet, z. B. unter Verwendung einer Serverfarm oder eines Clusters von Hochleistungscomputern, die Software laufen lassen, die zum Handhaben von hohen Volumen von Anfragen von mehreren Anwendern geeignet ist. Jedoch sind der Einfachheit halber viele Beispiele hierin in Bezug auf eine einzige Vorrichtung 106 beschrieben.
-
Der automatisierte Assistent 110 ist separat von den 3P-Agenten 140A–N und kommuniziert mit den 3P-Agenten 140A–N über ein oder mehrere Netzwerke, wie beispielsweise ein WAN. Bei vielen Implementierungen werden einer oder mehrere (z. B. alle) der 3P-Agenten 140A–N durch eine jeweilige Partei gemanagt, die separat von einer Partei ist, die den automatisierten Assistenten 110 managt.
-
Die 3P-Agenten 140A–N können jeweils, direkt oder indirekt, Daten zur Speicherung in einer 3P-Agenten-Datenbank 152 liefern. Die Daten für einen gegebenen 3P-Agenten können beispielsweise eine beabsichtigte Aktion (beabsichtigte Aktionen) definieren, die durch den 3P-Agenten aufgelöst werden kann (können). Darüber hinaus können die Daten für einen gegebenen 3P-Agenten für jede beabsichtigte Aktion Werte definieren, die durch den 3P-Agenten für eine Vielzahl von Parametern gehandhabt werden können, die für die beabsichtigte Aktion (beabsichtigten Aktionen) definiert sein können. Bei einigen Implementierungen kann der automatisierte Assistent 110 und/oder andere Komponenten die beabsichtigten Aktionen, Parameter für jede der beabsichtigten Aktionen und akzeptierbare Werte, die für jeden der Parameter definiert werden können, definieren. Beispielsweise können solche Kriterien über eine API definiert werden, die durch den automatisierten Assistenten 110 gehalten ist. Jeder der 3P-Agenten kann dann seine beabsichtigte Aktion (beabsichtigten Aktionen) und seine Werte für Parameter der beabsichtigten Aktion zum automatisierten Assistenten 110 und/oder einer anderen Komponente liefern (z. B. über ein WAN senden), der und/oder die die Daten in der 3P-Agenten-Datenbank 152 für gültig erklären und speichern kann. Bei einigen Implementierungen kann oder können einer oder mehrere der 3P-Agenten 140A–N Updates für einen Wert (Werte) für verschiedene Parameter dynamisch liefern (z. B. in Reaktion auf Bestandsänderungen, Änderungen bezüglich einer Funktionalität, Änderung bezüglich Dienstangeboten). Ebenso kann der automatisierte Assistent 110 bei einigen Implementierungen zusätzlich oder alternativ direkte Anfragen nach verschiedenen Werten von einem oder mehreren der 3P-Agenten 140A–N zusätzlich zu oder anstelle von einem Erhalten von Werten von der 3P-Agenten-Datenbank 152 zusätzlich oder alternativ durchführen.
-
Als ein Beispiel können für eine beabsichtigte Aktion ”Restaurantreservierung” obligatorische Parameter definiert werden, wie beispielsweise ”Anzahl von Leuten”, ”Standort” und ”Zeit”. Ein 3P-Agent kann Daten liefern, die verfügbare Werte für diese obligatorischen Parameter anzeigen, für welche er eine ”Restaurantreservierungsaktion” durchführen kann. Beispielsweise kann er Werte liefern, die jeden der Standorte anzeigen, die er bedient, und für jeden dieser Standorte auch Werte liefern, die anzeigen, ob er gegenwärtig beabsichtigte Aktionen für eine bestimmte Anzahl von Leuten (z. B. spezifische Mengen und/oder Bereiche von Mengen) und/oder Zeiten (z. B. spezifische Zeiten und/oder Bereiche von Zeiten) bedienen kann. Ebenso können beispielsweise für die beabsichtigte Aktion ”Restaurantreservierung” Parameter definiert werden, wie beispielsweise ”Tischtyppräferenz” (z. B. Tischnische, Tisch, hoch oben), ”Sitzstellenpräferenz (z. B. drinnen, draußen, Fenster), etc. definiert werden. Ein 3P-Agent kann gleichermaßen Daten liefern, die verfügbare Werte (wenn es welche gibt) für diese optionalen Parameter anzeigen, wobei einer oder mehrere der Werte optional von anderen optionalen und/oder obligatorischen Werten abhängig sind. Beispielsweise kann der 3P-Agent Daten liefern, die anzeigen, ob er eine beabsichtigte Aktion mit einer ”Tischtyppräferenz” bedienen kann, und/oder die anzeigen, welche Tischtypen verfügbar sind (optional gepaart mit Werten für Zeiten, eine Anzahl von Leuten und/oder Werten für andere Parameter). Als ein weiteres Beispiel können für eine beabsichtigte Aktion ”Fahrzeugtransport” obligatorische Parameter definiert werden, wie beispielsweise ”entstehender bzw. ursprünglicher Standort” und ”Abfahrtzeit”, und können optionale Parameter definiert werden, wie beispielsweise ”Ziel- bzw. Bestimmungsstandort”, ”Autogröße”, ”Preis”, etc. Ein 3P-Agent kann Daten liefern, die verfügbare Werte für diese obligatorischen und optionalen Parameter anzeigen, für welche er eine beabsichtigte Aktion ”Fahrzeugtransport” durchführen kann. Beispielsweise kann er Werte liefern, die geographische Bereiche anzeigen, die er bedient, als Werte für Parameter ”ursprünglicher Standort” und ”Bestimmungsstandort”.
-
Beabsichtigte Aktionen, die durch einen 3P-Agenten angezeigt werden können, können eine Vielfalt von ganz verschiedenen Dienstsektoren überspannen. Wie er hierin verwendet wird, ist ein Dienstsektor ein grober Sektor von Diensten, die selbst mehrere feinere Untersektoren haben können. Beispielsweise ist ”Reise” ein Dienstsektor, der selbst mehrere Untersektoren hat, wie beispielsweise Flugzeugreise, Autoreise, Zugreise, Unterbringung, etc. Ebenso ist beispielsweise ”interaktives Spiel” ein Dienstsektor, der selbst mehrere Untersektoren hat, wie beispielsweise ”Quiz”, ”Rollenspiele”, etc. Demgemäß können die beabsichtigten Aktionen, die durch die 3P-Agenten 140A–N durchführbar sind und die durch den automatisierten Assistenten 110 aufgerufen werden können, aus irgendeiner einer großen Anzahl (z. B. 10+) von groben Dienstsektoren sein.
-
Der automatisierte Assistent 110 enthält eine Eingabeverarbeitungsmaschine 112, eine Maschine für lokalen Inhalt 130, eine 3P-Agentenmaschine 120 und eine Ausgabemaschine 135. Bei einigen Implementierungen können eine oder mehrere der Maschinen des automatisierten Assistenten 110 weggelassen werden, kombiniert werden und/oder in einer Komponente implementiert sein, die separat vom automatisierten Assistenten 110 ist. Darüber hinaus kann der automatisierte Assistent 110 zusätzliche Maschinen enthalten, die der Einfachheit halber hierin nicht dargestellt sind.
-
Der automatisierte Assistent 110 empfängt Fälle einer Anwendereingabe von der Client-Vorrichtung 106. Beispielsweise kann der automatisierte Assistent 110 eine Spracheingabe in natürlicher Sprache in freier Form in der Form einer Streaming-Audioaufzeichnung empfangen. Die Streaming-Audioaufzeichnung kann durch die Client-Vorrichtung 106 in Reaktion auf Signale erzeugt werden, die von einem Mikrofon der Client-Vorrichtung 106 empfangen sind, das eine gesprochene Eingabe eines Anwenders der Client-Vorrichtung 106 erfasst. Als ein weiteres Beispiel kann der automatisierte Assistent 110 eine getippte Eingabe in natürlicher Sprache in freier Form empfangen und/oder bei einigen Implementierungen sogar eine strukturierte (nicht in freier Form) Eingabe. Bei einigen Implementierungen kann eine Anwendereingabe durch die Client-Vorrichtung 106 erzeugt werden und/oder zum automatisierten Assistenten 110 in Reaktion auf einen expliziten Aufruf der automatisierten Assistenten 110 durch einen Anwender der Client-Vorrichtung 106 geliefert werden. Beispielsweise kann der Aufruf eine Erfassung durch die Client-Vorrichtung 106 einer bestimmten Spracheingabe des Anwenders sein (z. B. ein Hotword/eine Phrase des automatisierten Assistenten 110, wie beispielsweise ”Hey, Assistent”), eine Anwenderinteraktion mit einer Hardwaretaste und/oder einer virtuellen Taste (z. B. durch ein Tippen auf eine Hardwaretaste, eine Auswahl eines graphischen Schnittstellenelements, das durch die Client-Vorrichtung 106 angezeigt ist), und/oder eine andere bestimmte Anwenderschnittstelleneingabe.
-
Der automatisierte Assistent 110 liefert einen Fall einer Ausgabe in Antwort auf ein Empfangen eines Falls einer Anwendereingabe von der Client-Vorrichtung 106. Der Fall einer Ausgabe kann beispielsweise Audio sein, um durch die Vorrichtung 106 hörbar präsentiert zu werden (z. B. eine Ausgabe über einen Lautsprecher der Client-Vorrichtung 106), Text und/oder graphischer Inhalt, um durch die Vorrichtung 106 graphisch präsentiert zu werden (z. B. über eine Anzeige der Client-Vorrichtung 106 durchgeführt), etc. Wie es hierin beschrieben ist, können einige Fälle der Ausgabe auf lokalem Antwortinhalt basieren, der durch den automatisierten Assistenten 110 erzeugt ist (optional unter Verwendung von einer oder mehreren externen Komponenten, die auch durch dieselbe Einheit gemanagt werden, die den automatisierten Assistenten 110 managt); während andere Fälle der Ausgabe auf 3P-Antwortinhalt basieren können, der durch einen ausgewählten der 3P-Agenten 140A–N erzeugt ist.
-
Die Eingabeverarbeitungsmaschine 112 des automatisierten Assistenten 110 verarbeitet eine Eingabe in natürlicher Sprache und/oder eine andere Anwendereingabe, die über die Client-Vorrichtungen 106 empfangen ist, und erzeugt eine annotierte Ausgabe zur Verwendung durch eine oder mehrere andere Komponenten des automatisierten Assistenten 110, wie beispielsweise eine Maschine für lokalen Inhalt 130 und/oder eine 3P-Agentenmaschine 120. Beispielsweise kann die Eingabeverarbeitungsmaschine 112 eine Eingabe in freier Form in natürlicher Sprache verarbeiten, die durch einen Anwender über eine oder mehrere Anwenderschnittstelleneingabevorrichtungen der Client-Vorrichtung 106 erzeugt ist. Die erzeugte annotierte Ausgabe enthält eine oder mehrere Annotationen der Eingabe in natürlicher Sprache und optional einen oder mehrere (z. B. alle) der Ausdrücke der Eingabe in natürlicher Sprache. Als ein weiteres Beispiel kann die Eingabeverarbeitungsmaschine 112 zusätzlich oder alternativ ein Sprache-zu-Text-Modul enthalten, das einen Fall einer Spracheingabe empfängt (z. B. in der Form von digitalen Audiodaten) und die Spracheingabe in Text umwandelt, der eines oder mehrere Textwörter oder Phrasen enthält. Bei einigen Implementierungen ist das Sprache-zu-Text-Modul eine Streaming-Sprache-zu-Text-Maschine. Das Sprache-zu-Text-Modul kann auf einem oder mehreren gespeicherten Sprache-zu-Text-Modellen beruhen (auf die auch als Sprachmodelle Bezug genommen wird), die jeweils eine Beziehung zwischen einem Audiosignal und phonetischen Einheiten in einer Sprache zusammen mit Wortsequenzen in der Sprache modellieren können.
-
Bei einigen Implementierungen ist die Eingabeverarbeitungsmaschine 112 konfiguriert, um verschiedene Typen von grammatischer Information in einer Eingabe in natürlicher Sprache zu identifizieren und zu annotieren (z. B. einer getippten Eingabe und/oder in Text, der von einer Audioeingabe umgewandelt ist). Beispielsweise kann die Eingabeverarbeitungsmaschine 112 einen Part-of-Speech-Tagger (= Zuordnungseinheit von Wörtern und Satzzeichen eines Textes zu Worten), der konfiguriert ist, um Ausdrücke mit ihren grammatikalischen Rollen zu annotieren. Beispielsweise kann der Part-of-Speech-Tagger jeden Ausdruck mit seinem Teil von Sprache taggen bzw. diese zuordnen, wie beispielsweise ”Nomen bzw. Hauptwort”, ”Verb”, ”Adjektiv”, ”Pronomen”, etc. Ebenso kann die Eingabeverarbeitungsmaschine 112 bei einigen Implementierungen zusätzlich und/oder alternativ einen Abhängigkeits-Parser enthalten, der konfiguriert ist, um syntaktische Beziehungen zwischen Ausdrücken in der Eingabe in natürlicher Sprache zu bestimmen. Beispielsweise kann der Abhängigkeits-Parser bestimmen, welche Ausdrücke andere Ausdrücke, Subjekte und Verben von Sätzen modifizieren, und so weiter (z. B. ein Parser-Baum) – und kann Annotationen von solchen Abhängigkeiten herstellen.
-
Bei einigen Implementierungen kann die Eingabeverarbeitungsmaschine 112 zusätzlich und/oder alternativ einen Entitäts-Tagger enthalten, der konfiguriert ist, um Entitätsreferenzen in einem oder mehreren Segmenten zu annotieren, wie beispielsweise Referenzen bzw. Bezugnahmen zu Leuten, Organisationen, Standorten, und so weiter. Der Entitäts-Tagger kann Referenzen zu einer Entität auf einer hohen Ebene von Granularität annotieren (z. B. um eine Identifikation von allen Referenzen zu einer Entitätsklasse, wie beispielsweise Leute, zu ermöglichen) und/oder einer niedrigen Ebene von Granularität (z. B. um eine Identifikation von allen Referenzen zu einer bestimmten Entität zu ermöglichen, wie beispielsweise einer bestimmten Person). Der Entitäts-Tagger kann auf Inhalt der Eingabe in natürlicher Sprache beruhen, um eine bestimmte Entität aufzulösen, und/oder kann optional mit einem Wissensgraphen oder einer anderen Entität kommunizieren, um eine bestimmte Entität aufzulösen.
-
Bei einigen Implementierungen kann die Eingabeverarbeitungsmaschine 112 zusätzlich und/oder alternativ einen Koreferenzierer enthalten, der konfiguriert ist, um Referenzen zu derselben Entität basierend auf einem oder mehreren Kontexthinweisen zu gruppieren oder zu ”clustern”. Beispielsweise kann der Koreferenzierer verwendet werden, um den Ausdruck ”es” in einem Fall einer Anwendereingabe zu einer vorangehenden Erwähnung von ”Film A” in einem direkt vorangehenden Fall einer Anwendereingabe aufzulösen.
-
Bei einigen Implementierungen können eine oder mehrere Komponenten der Eingabeverarbeitungsmaschine 112 auf Annotationen von einer oder mehreren anderen Komponenten der Eingabeverarbeitungsmaschine 112 beruhen. Beispielsweise kann bei einigen Implementierungen der angegebene Entitätstagger auf Annotationen von dem Koreferenzierer und/oder dem Abhängigkeits-Parser beim Annotieren von allen Erwähnungen zu einer bestimmten Entität beruhen. Ebenso kann der Koreferenzierer bei einigen Implementierungen auf Annotationen von dem Abhängigkeits-Parser beim Clustern von Referenzen zu derselben Entität beruhen. Bei einigen Implementierungen können bei einem Verarbeiten einer bestimmten Eingabe in natürlicher Sprache eine oder mehrere Komponenten der Eingabeverarbeitungsmaschine 112 bezogene frühere Eingabe und/oder andere bezogene Daten außerhalb der bestimmten Eingabe in natürlicher Sprache verwenden, um eine oder mehrere Annotationen zu bestimmen.
-
Die Eingabeverarbeitungsmaschine 112 kann versuchen, die Semantiken oder die Bedeutung einer Anwendereingabe zu erkennen und semantische Anzeichen der Anwendereingabe zur lokalen Inhaltsmaschine 130 und/oder zur 3P-Agentenmaschine 120 zur Verwendung durch diese Maschinen liefern. Die Eingabeverarbeitungsmaschine 112 kann auf einem oder mehreren gespeicherten Grammatikmodellen beruhen, um Text (oder andere Eingabe) auf bestimmte Aktionen abzubilden und um Attribute zu identifizieren, die die Durchführung von solchen Aktionen beschränken, z. B. Eingabevariablen zu solchen Aktionen.
-
Die Maschine für lokalen Inhalt 130 kann eine Antwort auf eine empfangene Anwendereingabe erzeugen, wenn diese Anwendereingabe mit einer ”lokalen Aktion” (was entgegengesetzt zu einer 3P-Agentenaktion ist) assoziiert ist. Bei einigen Implementierungen bestimmt die Eingabeverarbeitungsmaschine 112, ob die Anwendereingabe mit einer lokalen Aktion oder einer beabsichtigten Aktion des 3P-Agenten assoziiert ist. Die lokale Inhaltsmaschine 130 kann in Verbindung mit der Eingabeverarbeitungsmaschine 112 arbeiten und eine oder mehrere Aktionen durchführen, wie es durch einen geparsten Text diktiert ist (z. B. eine Aktion (Aktionen) und einen Aktionsparameter (Aktionsparameter)), der durch die Eingabeverarbeitungsmaschine 112 geliefert ist. Für lokale Aktionen kann die Maschine für lokalen Inhalt 130 einen lokalen Antwortinhalt erzeugen und diesen lokalen Antwortinhalt zum Liefern einer entsprechenden Ausgabe zur Präsentation zu einem Anwender über die Vorrichtung 106 zur Ausgabemaschine 135 liefern. Die Maschine für lokalen Inhalt 130 kann eines oder mehrere gespeicherte Modelle für lokalen Inhalt 154 zum Erzeugen von lokalem Inhalt und/oder zum Durchführen von anderen Aktionen verwenden. Die Inhaltsmodelle 154 können beispielsweise verschiedene Regeln zum Erzeugen von lokalem Antwortinhalt enthalten. Bei einigen Implementierungen kann die Maschine für lokalen Inhalt 130 mit einer oder mehreren anderen ”lokalen” Komponenten beim Erzeugen von lokalem Antwortinhalt kommunizieren, wie beispielsweise einer Suchmaschine, die durch die Einheit gemanagt wird, die den automatisierten Assistenten 110 managt.
-
Die Ausgabemaschine 135 liefert Fälle einer Ausgabe zur Client-Vorrichtung 106. Ein Fall einer Ausgabe kann auf lokalem Antwortinhalt (von der Maschine für lokalen Inhalt 130) und/oder auf 3P-Antwortinhalt (z. B. von einem der 3P-Agenten 140A–N, wenn der automatisierte Assistent 110 als ein Vermittler wirkt) basieren. Bei einigen Implementierungen kann die Ausgabemaschine 135 eine Text-zu-Sprache-Maschine enthalten, die Textkomponenten von Antwortinhalt in ein Audioformat umwandelt, und die durch die Ausgabemaschine 135 gelieferte Ausgabe ist in einem Audioformat (z. B. als Streaming-Audio). Bei einigen Implementierungen kann der Antwortinhalt bereits in einem Audioformat sein. Bei einigen Implementierungen liefert die Ausgabemaschine 135 zusätzlich oder alternativ einen Textantwortinhalt als Ausgabe (optional zur Umwandlung durch die Vorrichtung 106 in Audio) und/oder liefert anderen graphischen Inhalt als Ausgabe für eine graphische Anzeige durch die Client-Vorrichtung 106.
-
Die 3P-Agentenmaschine 120 enthält ein Parametermodul 122, ein Agentenauswahlmodul 124, ein Dialogmodul 126 und ein Aufrufmodul 128. Bei einigen Implementierungen kann (können) das Modul (die Module) der 3P-Agentenmaschine 120 weggelassen werden, kombiniert werden und/oder in einer Komponente implementiert werden, die separat von der 3P-Agentenmaschine 120 ist. Darüber hinaus kann die 3P-Agentenmaschine 120 zusätzliche Module enthalten, die der Einfachheit halber hierin nicht dargestellt sind.
-
Wenn eine durch die Client-Vorrichtung 106 gelieferte Anwendereingabe mit einer beabsichtigten 3P-Aktion assoziiert ist, kann das Parametermodul 122 bestimmen, ob diese Anwendereingabe einen Wert (Werte) für irgendwelche Parameter enthält, die in Assoziation mit dieser bestimmten Aktion gespeichert sind (z. B. in einer Datenbank 152 gespeichert), und wenn es so ist, diese Werte in Assoziation mit der beabsichtigten Aktion des Anwenders speichern. Das Parametermodul 122 kann weiterhin mit dem Dialogmodul 126 interagieren, um eine Aufforderung (Aufforderungen) zu erzeugen, um eine weitere Anwendereingabe zu erbitten, die auf irgendwelche nicht spezifizierten obligatorischen Parameter für die beabsichtigte Aktion bezogen ist. Irgendeine Aufforderung (irgendwelche Aufforderungen), die durch das Dialogmodul 126 erzeugt ist (sind), kann (können) zur Präsentation zum Anwender durch die Ausgabemaschine 135 geliefert werden, und eine weitere reagierende Anwendereingabe kann empfangen werden. Die weitere Anwendereingabe (weiteren Anwendereingaben) kann (können) jeweils durch das Parametermodul 122 analysiert werden (optional als durch die Eingabeverarbeitungsmaschine 112 annotiert), um zu bestimmen, ob diese Eingaben einen Wert (Werte) für einen Parameter (Parameter) enthalten, und wenn es so ist, diese Werte in Assoziation mit der beabsichtigten Aktion des Anwenders speichern.
-
Das Agentenauswahlmodul 124 verwendet einen Wert (Werte), der (die) durch das Parametermodul 122 bestimmt ist (sind), um aus einer Gruppe von 3P-Agenten, die in Assoziation mit der beabsichtigten Aktion (z. B. in einer Datenbank 152) gespeichert sind, einen bestimmten 3P-Agenten auszuwählen, um ihn bei einer Durchführung der beabsichtigten Aktion zu verwenden. Das Agentenauswahlmodul 124 kann zusätzlich oder alternativ andere Kriterien beim Auswählen des bestimmten 3P-Agenten verwenden und kann optional mit dem Dialogmodul 126 interagieren, um eine Aufforderung (Aufforderungen) zu erzeugen, um eine weitere Anwendereingabe beim Auswählen eines 3P-Agenten zu erbitten. Irgendeine Aufforderung (irgendwelche Aufforderungen), die durch das Dialogmodul 126 erzeugt ist (sind), kann (können) zur Präsentation zum Anwender durch die Ausgabemaschine 135 geliefert werden, und eine weitere reagierende Anwendereingabe kann empfangen werden. Die weitere Anwendereingabe (weiteren Anwendereingaben) kann (können) jeweils durch das Agentenauswahlmodul 124 analysiert werden (optional als durch die Eingabeverarbeitungsmaschine 112 annotiert), um einen bestimmten 3P-Agenten zu bestimmen.
-
Beim Erzeugen von Aufforderungen beim Interagieren mit dem Parametermodul 122 und/oder dem Agentenauswahlmodul 124 kann das Dialogmodul 126 Eigenschaften von Parametern und/oder 3P-Agenten verwenden, die durch diese Module gesucht werden. Darüber hinaus kann das Dialogmodul 126 ein oder mehrere Grammatikmodule, Regeln und/oder Annotationen von der Eingabeverarbeitungsmaschine 112 beim Erzeugen von Aufforderungen und beim Interagieren mit einem Anwender über die Client-Vorrichtung 106 verwenden.
-
Das Aufrufmodul 128 sendet, zu einem bestimmten 3P-Agenten der 3P-Agenten 140A–N, der durch das Agentenauswahlmodul 124 ausgewählt ist, eine Aufrufanfrage, die optionale und/oder obligatorische Parameter enthält, die durch das Parametermodul 122 bestimmt sind. Die gesendete Aufrufanfrage ruft den bestimmten 3P-Agenten auf. Ein Aufrufen eines 3P-Agenten, wie es hierin verwendet wird, kann sich auf ein Transferieren bzw. Weiterleiten (aktuell bzw. tatsächlich oder effektiv) des Dialogs zwischen dem Anwender der Client-Vorrichtung 106 und dem automatisierten Assistenten 110 zum 3P-Agenten beziehen. Ein Aufrufen eines 3P-Agenten kann zusätzlich oder alternativ eine Netzwerkkommunikation des automatisierten Assistenten 110 mit dem 3P-Agenten enthalten, um die beabsichtigte Aktion zu erreichen, ohne dass der 3P-Agent den Dialog direkt lenkt.
-
Wie es hierin beschrieben ist, kann der automatisierte Assistent 110 in einigen Situationen noch als Vermittler dienen, wenn der Dialog effektiv zu dem bestimmten 3P-Agenten transferiert wird. Beispielsweise kann beim Dienen als Vermittler, wobei eine Eingabe in natürlicher Sprache eines Anwenders eine Spracheingabe ist, Folgendes auftreten: die Eingabeverarbeitungsmaschine 122 des automatisierten Assistenten 110 kann diese Spracheingabe in Text umwandeln; der automatisierte Assistent 110 kann den Text (und optional Annotationen des Textes von der Eingabeverarbeitungsmaschine 112) zum 3P-Agenten senden und 3P-Antwortinhalt vom 3P-Agenten empfangen; und die Ausgabemaschine 135 kann eine Ausgabe, die auf dem 3P-Antwortinhalt basiert, zur Präsentation zum Anwender über die Client-Vorrichtung 106 liefern. Ebenso kann beispielsweise beim Dienen als Vermittler der automatisierte Assistent 110 zusätzlich oder alternativ eine Anwendereingabe und/oder einen 3P-Antwortinhalt analysieren, um zu bestimmen, ob ein Dialog mit dem 3P-Agenten beendet werden sollte, zu einem alternativen 3P-Agenten transferiert werden sollte, etc. Wie es hierin auch beschrieben ist, kann der Dialog in einigen Situationen tatsächlich zum 3P-Agenten transferiert werden (ohne dass der automatisierte Assistent 110 als ein Vermittler dient, wenn er (der Dialog) einmal transferiert ist), und auf ein Auftreten von einer oder mehreren Bedingungen hin zurück zum automatisierten Assistenten 110 transferiert werden.
-
Jeder der 3P-Agenten 140A–N kann eine 3P-Kontextparametermaschine enthalten, eine 3P-Inhaltsmaschine und/oder andere Maschinen. Darüber hinaus kann ein 3P-Agent bei vielen Implementierungen auf verschiedene gespeicherte Modelle und/oder andere Ressourcen (z. B. sein eigenes Grammatikmodell (seine eigenen Grammatikmodelle) und/oder Inhaltsmodell (Inhaltsmodelle)) beim Erzeugen von 3P-Antwortinhalt zugreifen.
-
Wendet man sich nun den 2A, 2B und 3 zu, sind Beispiele von Verfahren beschrieben, die durch Komponenten der Umgebung der 1 durchgeführt werden können.
-
2A ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren 200A gemäß hierin offenbarten Implementierungen darstellt. Der Annehmlichkeit halber sind die Operationen des Ablaufdiagramms unter Bezugnahme auf ein System beschrieben, das die Operationen durchführt. Dieses System kann verschiedene Komponenten von verschiedenen Computersystemen enthalten, wie beispielsweise eine oder mehrere Komponenten des automatisierten Assistenten 110. Darüber hinaus hat, während Operationen des Verfahrens 200 in einer bestimmten Reihenfolge gezeigt sind, dies nicht die Bedeutung, dass es beschränkend ist. Eine oder mehrere Operationen können neu angeordnet, weggelassen oder hinzugefügt werden.
-
Bei einem Block 250 empfängt das System eine Anwendereingabe. Bei einigen Implementierungen ist die beim Block 250 empfangene Anwendereingabe eine Eingabe in natürlicher Sprache, die in freier Form ist. Beispielsweise kann das System eine getippte Eingabe in der Form von Text empfangen, der durch eine Client-Vorrichtung erzeugt ist, basierend auf einer Anwendereingabe, die durch eine physikalische oder virtuelle Tastatur der Client-Vorrichtung erfasst ist. Ebenso kann das System beispielsweise eine Spracheingabe in der Form von Streaming-Audiodaten empfangen, die durch eine sprachfähige Client-Vorrichtung erzeugt sind, basierend auf einer gesprochenen Eingabe, die durch einen Wandler der Client-Vorrichtung erfasst ist. Bei einigen dieser Beispiele kann das System optional die Spracheingabe in Text umwandeln. Beispielsweise kann ein Sprache-zu-Text-Modul des Systems die Spracheingabe in Text unter Verwendung eines Sprache-zu-Text-Modells umwandeln, wie beispielsweise einen Dekodiergraphen für einen finiten Zustand.
-
Bei einem Block 252 bestimmt das System, ob die empfangene Anwendereingabe eine beabsichtigte Aktion einer dritten Partei (3P) anzeigt. Beispielsweise kann das System Text von empfangener Eingabe in natürlicher Sprache (oder Text, der aus einer empfangenen Audioeingabe in natürlicher Sprache umgewandelt ist) parsen und bestimmen, ob der geparste Text auf irgendeine beabsichtigte 3P-Aktion abbildet. Beispielsweise kann das System bestimmen, ob der geparste Text auf irgendeine beabsichtigte 3P-Aktion abbildet, basierend darauf, ob Ausdrücke/Phrasen, die im Text enthalten sind, mit Ausdrücken/Phrasen übereinstimmen, die in Assoziation mit einer beabsichtigten 3P-Aktion gespeichert sind. Ebenso kann das System beispielsweise bestimmen, ob eine oder mehrere Entitäten, die aus dem Text abgeleitet sind, mit einer oder mehreren Entitäten übereinstimmen, die in Assoziation mit einer beabsichtigten 3P-Aktion gespeichert sind.
-
Wenn das System beim Block 252 bestimmt, dass eine beabsichtigte 3P-Aktion nicht angezeigt ist, geht das System weiter zu Blöcken 254, 256 und 258. Beim Block 254 erzeugt das System lokalen Antwortinhalt ohne Aufruf eines Agenten einer dritten Partei. Beispielsweise kann das System den lokalen Antwortinhalt unter Verwendung von lokalen Grammatikmodellen und/oder lokalen Inhaltsmodellen des Systems erzeugen. Beim Block 256 liefert das System eine Ausgabe, die auf dem lokalen Antwortinhalt basiert. Beispielsweise kann die Ausgabe der lokale Antwortinhalt oder eine Umwandlung (z. B. eine Umwandlung von Text in Sprache) des lokalen Antwortinhalts sein. Die Ausgabe wird zur Präsentation (z. B. akustisch oder graphisch) über die Client-Vorrichtung geliefert. Beim Block 258 wartet das System auf eine zusätzliche Spracheingabe und geht weiter zurück zum Block 250 auf ein Empfangen einer zusätzlichen Spracheingabe hin.
-
Wenn das System bei einer Iteration des Blocks 252 bestimmt, dass eine beabsichtigte 3P-Aktion angezeigt ist, geht das System weiter zu einem Block 260. Beim Block 260 bestimmt das System, ob ein Wert (Werte) für einen Parameter (alle Parameter) aufgelöst worden ist (sind), der (die) in Assoziation mit der beabsichtigten Aktion als obligatorisch gespeichert ist (sind). Bei einer ersten Iteration des Blocks 260 enthält dies ein Bestimmen, ob der obligatorische Wert (die obligatorischen Werte) durch die Anwendereingabe angezeigt ist (sind), die bei einer letzten Iteration des Blocks 250 empfangen ist, und/oder bei einer oder mehreren vorangehenden Iterationen des Blocks 250 (z. B. vor einer Anwendereingabe, die einen Wert (Werte) liefert, aber die noch nicht die beabsichtigte Aktion anzeigte). Der Block 260 kann auch ein Ableiten eines Werts (von Werten) für einen oder mehrere obligatorische Parameter basierend auf gespeicherten Anwenderpräferenzen und/oder anderen Daten enthalten. Bei einer weiteren Iteration (weiteren Iterationen) des Blocks 260 wird auch eine weitere Anwendereingabe, die beim Block 264 geliefert ist (der nachstehend beschrieben ist) berücksichtigt werden.
-
Als ein Beispiel des Blocks 260 soll angenommen sein, dass eine Eingabe in natürlicher Sprache von ”Kaufe 2 Karten für Erwachsene für diesen Film für heute Abend” bei einer letzten Iteration des Blocks 250 empfangen wurde, der eine Eingabe in natürlicher Sprache von ”Erzähl mir etwas über den Film A” in einer direkt vorangehenden Iteration des Blocks 250 voranging, und diese Blöcke 254, 256 und 258 für die direkt vorangehende Iteration des Blocks 250 aufgerufen wurden, um lokalen Inhalt über den fiktionalen ”Film A” zu liefern. Die beabsichtigte 3P-Aktion von ”Kaufe eine Karte (Karten) für einen Film” kann beim Block 252 basierend auf der Eingabe in natürlicher Sprache von ”Kaufe 2 Karten für Erwachsene für diesen Film für heute Abend” bestimmt worden sein. Beim Block 260 kann das System diese Eingabe in natürlicher Sprache verwenden, um einen Wert von ”2” für den obligatorischen Parameter von ”Anzahl von Karten für Erwachsene” bestimmen. Das System kann auch einen Wert von ”Film A” (oder einen assoziierten Identifizierer) für den obligatorischen Parameter von ”Filmtitel” unter Verwendung dieser Eingabe in natürlicher Sprache und der vorangehenden Eingabe in natürlicher Sprache der vorangehenden Iteration des Blocks 250 bestimmen (z. B. unter Verwendung eines Koreferenzierers, um ”Diesen Film” in ”Film A” aufzulösen). Das System kann weiterhin bestimmen, dass es für die beabsichtigte 3P-Aktion von ”Kaufe eine Karte (Karten) für einen Film” einen zusätzlichen obligatorischen Parameter von ”Theaterstandort” gibt – und dass ein Wert für den obligatorischen Parameter ”Theaterstandort” nicht aufgelöst worden ist.
-
Wenn das System beim Block 260 bestimmt, dass ein Wert (Werte) nicht für einen obligatorischen Parameter (alle obligatorischen Parameter) aufgelöst worden ist (sind), geht das System weiter zu Blöcken 262 und 264. Beim Block 262 liefert das System zur Präsentation zum Anwender eine Aufforderung, um einen Wert (Werte) für einen oder mehrere der obligatorischen Parameter zu erbitten, die nicht aufgelöst worden sind. Beispielsweise und fortfahrend mit dem Beispiel des vorangehenden Absatzes, kann das System eine Aufforderung von ”Welches Theater” erzeugen, um einen Wert für den obligatorischen Parameter von ”Theaterstandort” zu erbitten. Beim Block 264 empfängt das System eine weitere Anwendereingabe in Antwort auf die Aufforderung. Beispielsweise und fortfahrend mit demselben Beispiel kann das System eine Eingabe in natürlicher Sprache in freier Form von ”Megaplex” empfangen. Das System geht dann weiter zurück zum Block 260. Beispielsweise kann das System bei der nächsten Iteration des Blocks 260 die Eingabe von ”Megaplex” auf einen bestimmten Theaterstandort auflösen (z. B. basierend auf dem Text und optional einem Standort des Anwenders) und bestimmen, dass alle obligatorischen Parameter aufgelöst worden sind. Es wird verstanden, dass in einigen Fällen mehrere Iterationen der Blöcke 260, 262 und 264 durchgeführt sein werden, und dass jede Iteration ein Auffordern, Empfangen und/oder Auflösen eines Werts (von Werten) enthalten kann, der (die) mit einem oder mehreren entsprechenden obligatorischen Parametern assoziiert ist (sind).
-
Wenn das System beim Block 260 bestimmt, dass ein Wert (Werte) für einen obligatorischen Parameter (alle obligatorischen Parameter) aufgelöst worden ist (sind), geht das System weiter zu einem Block 270. Beim Block 270 bestimmt das System, ob ein bestimmter 3P-Agent aus einer Gruppe von 3P-Agenten ausgewählt werden kann, die jeweils die beabsichtigte Aktion durchführen können. Bei einigen Implementierungen kann das System einen oder mehrere 3P-Agenten der Gruppe aus der Auswahl basierend auf einem Vergleichen von Folgendem eliminieren: einem Wert (Werten) für einen Parameter (Parameter), der (die) basierend auf einer Anwendereingabe bei einer oder mehreren Iterationen des Blocks 250 und/oder des Blocks 264 bestimmt ist (sind), mit einem entsprechenden Wert (entsprechenden Werten) für den Parameter (die Parameter), der (die) für jeden der 3P-Agenten definiert ist (sind), die die beabsichtigte Aktion durchführen können. Beispielsweise kann für den obligatorischen Parameter von ”Theaterstandort” der Wert von ”Megaplex” bestimmt werden, und kann ein gegebener 3P-Agent aus der Auswahl basierend auf einem Parameter ”Theaterstandort für den gegebenen 3P-Agenten eliminiert werden, der den Wert von ”Megaplex” nicht enthält.
-
Obwohl ein Beispiel in Bezug auf einen obligatorischen Parameter zur Verfügung gestellt ist, kann das System bei vielen Implementierungen zusätzlich oder alternativ einen oder mehrere optionale Parameter verwenden, die für die beabsichtigte Aktion definiert sind, um einen oder mehrere 3P-Agenten zu eliminieren. Beispielsweise können optionale Parameter basierend auf gespeicherten Anwenderpräferenzen abgeleitet werden und/oder können in einer Aufforderung durch das System erbittet werden und/oder durch den Anwender über eine Anwendereingabe bei einer oder mehreren Iterationen des Blocks 250 und/oder des Blocks 264 frei angeboten werden. Beispielsweise soll angenommen sein, dass eine Aufforderung beim Block 262 ”Welches Theater” ist (um einen Wert für den obligatorischen Parameter von ”Theaterstandort” zu erbitten), und die Antworten der Anwendereingabe beim Block 264 ”Megaplex – die Vorstellung um 7:00” ist. Eine solche reagierende Anwendereingabe kann verwendet werden, um einen Wert von ”7:00” für einen optionalen Parameter von ”Filmzeit” zu bestimmen, auch wenn sie nicht explizit erbittet wurde. Weiterhin kann beim Block 270 (und/oder beim Block 280, der nachstehend beschrieben ist) der optionale Parameter verwendet werden. Beispielsweise kann beim Block 270 ”7:00” verwendet werden, um einen 3P-Agenten zu eliminieren, der einen Wert für einen Parameter ”Filmzeit” hat, der anzeigt, dass er keinen Bestand für diese Zeit für ”Film A” beim ”Megaplex” hat.
-
Andere Kriterien können beim Block 270 zusätzlich oder alternativ verwendet werden, um zu bestimmen, ob ein bestimmter 3P-Agent aus einer Gruppe von 3P-Agenten ausgewählt werden kann, die jeweils die beabsichtigte Aktion durchführen können. Beispielsweise kann das System dort, wo es bestimmt wird, dass mehrere 3P-Agenten die beabsichtigte Aktion mit dem bestimmten Wert (den bestimmten Werten) für einen Parameter (für Parameter) durchführen können, optional einen einzelnen bestimmten 3P-Agenten basierend auf einem oder mehreren Kriterien auswählen. Beispielsweise kann das System den bestimmten 3P-Agenten basierend darauf auswählen, dass der Anwender zuvor implizit oder explizit eine Präferenz für den bestimmten 3P-Agenten gegenüber anderen verfügbaren 3P-Agenten anzeigt. Ebenso kann das System beispielsweise zusätzlich oder alternativ den bestimmten 3P-Agenten basierend auf einer Bewertung des bestimmten 3P-Agenten auswählen (z. B. basierend auf einer Rückführung bzw. einer Rückkopplung und/oder einer Verwendung durch mehrere Anwender), basierend auf einem Preis, einer Beendigung der beabsichtigten Aktion mit dem bestimmten 3P-Agenten, etc.
-
Wenn das System beim Block 270 bestimmt, dass ein bestimmter 3P-Agent nicht ausgewählt werden kann, geht das System weiter zum Block 272. Beim Block 272 liefert das System zur Präsentation zum Anwender eine Aufforderung, die den Anwender bittet, einen 3P-Agenten aus mehreren Aktionen auszuwählen. Die mehreren Optionen, die dem Anwender präsentiert sind, enthalten einen oder mehrere der ”nicht eliminierten” 3P-Agenten. Anders ausgedrückt einen oder mehrere der 3P-Agenten, die die beabsichtigte Aktion mit dem speziellen bestimmten Wert (den speziellen bestimmten Werten) durchführen können. Als ein Beispiel kann das System eine Aufforderung liefern, die dem Anwender eine Auswahl zwischen zwei oder mehreren von solchen 3P-Agenten präsentiert (z. B. ”Möchtest du den 3P-Agenten 1 oder den 3P-Agenten 2 verwenden”). Bei einigen Implementierungen kann das System zusätzlich oder alternativ in der Aufforderung einen Wert (Werte) enthalten, der (die) spezifisch für die präsentierten 3P-Agenten ist (sind) und der (die) durch den Anwender nicht spezifiziert worden ist (sind), um dem Anwender beim Auswählen zu helfen. Beispielsweise kann die Aufforderung anstelle eines expliziten Identifizierens von jedem von mehreren 3P-Agenten nur Parameterwerte identifizieren, die sich zwischen den mehreren 3P-Agenten unterscheiden (z. B. ”Einer kann es für 15 $ am Montag machen und der andere kann es für 12 $ am Dienstag machen, welcher von ihnen?”). Ebenso kann bei einigen Implementierungen, welche 3P-Agenten (von mehreren 3P-Agenten, die die beabsichtigte Aktion mit dem bestimmten Wert (den bestimmten Werten) erreichen können) tatsächlich zum Enthaltensein in einer Aufforderung ausgewählt werden, auf einen Wert (Werten) basieren, der (die) spezifisch für diese 3P-Agenten ist (sind) und der (die) durch den Anwender nicht spezifiziert worden ist (sind). Beispielsweise dort, wo ein Wert für einen Preis-Parameter durch den Anwender nicht spezifiziert worden ist, kann er verwendet werden, um zwei spezielle 3P-Agenten zum Liefern in der Aufforderung gegenüber anderen verfügbaren 3P-Agenten auszuwählen, die auch die beabsichtigte Aktion mit dem bestimmten Wert (den bestimmten Werten) durchführen können.
-
Bei einem Block 274 empfängt das System eine weitere Anwendereingabe in Antwort auf die Aufforderung des Blocks 272. Das System geht dann weiter zurück zum Block 270, um zu bestimmen, ob ein spezieller 3P-Agent unter Berücksichtigung der weiteren Anwendereingabe ausgewählt werden kann. Beispielsweise kann das System beim Block 274 eine Eingabe in natürlicher Sprache in freier Form empfangen, die einen der 3P-Agenten direkt (z. B. einen Namen von einem enthält) oder indirekt (z. B. einen Wert von einem spezifiziert) anzeigt, die in der Aufforderung des Blocks 272 präsentiert sind. Beim Block 270 kann das System dann den angezeigten 3P-Agenten basierend darauf auswählen, dass er in der Anwendereingabe des Blocks 274 angezeigt wird. In einigen Fällen können mehrere Iterationen der Blöcke 272 und 274 durchgeführt werden. Beispielsweise kann die Aufforderung bei einer ersten Iteration des Blocks 272 ”Zwei 3P-Agenten können dich in weniger als 10 Minuten aufnehmen und schätzen Kosten von 15 $; ein anderer wird dich in 20 Minuten aufnehmen und schätzt Kosten von 10 $”. In Antwort und bei einer ersten Iteration des Blocks 274 kann die Anwendereingabe diejenigen ”Einer von den in weniger als 10 Minuten” sein. Bei einer nächsten Iteration des Blocks 272 kann die Aufforderung ”Ok. Der 3P-Agent A hat eine Bewertung von 4.0 und der 3P-Agent B hat eine Bewertung von 3.9, welcher?” sein. In Antwort darauf und bei einer zweiten Iteration des Blocks 274 kann die Anwendereingabe ”3P-Agent B” sein, welchen das System beim Block 270 verwenden kann, um ”3P-Agent B” auszuwählen.
-
Wenn das System bei einer Iteration des Blocks 270 bestimmt, dass ein spezieller 3P-Agent ausgewählt werden kann, kann das System zu einem Block 280 weitergehen. Bei einigen Implementierungen kann das System vor einem Weitergehen zum Block 280 zuerst den Anwender auffordern, zu bestätigen, dass der Anwender wünscht, den speziellen 3P-Agenten zu verwenden (z. B. wenn Iterationen des Blocks 272 und 274 nicht durchgeführt wurden und/oder der Anwender auf andere Weise nicht einen Wunsch angezeigt hat, weiterzugehen). Bei diesen Implementierungen kann das System eine bestätigende Anwendereingabe in Antwort auf die Aufforderung vor einem Weitergehen zum Block 280 erfordern. Bei anderen Implementierungen kann das System automatisch zum Block 280 weitergehen, ohne zuerst den Anwender zu einer Bestätigung aufzufordern.
-
Bei einem Block 280 sendet das System eine Aufrufanfrage zu dem beim Block 270 ausgewählten 3P-Agenten. Beispielsweise kann das System die Aufrufanfrage über ein oder mehrere Netzwerke senden und kann optional die API verwenden. Bei einigen Implementierungen enthält die Aufrufanfrage einen Wert (Werte) für einen Parameter (Parameter), der (die) bestimmt sind, wie es oben beschrieben ist. Bei einigen Implementierungen enthält die Aufrufanfrage auch optional die beabsichtigte Aktion (z. B. wenn der ausgewählte 3P-Agent mehrere beabsichtigte Aktionen durchführen kann).
-
Bei einem Block 282 empfängt das System 3P-Antwortinhalt vom 3P-Agenten in Antwort auf ein Senden der Aufrufanfrage beim Block 280. Beispielsweise kann das System den 3P-Antwortinhalt über ein oder mehrere Netzwerkschnittstellen empfangen und kann optional eine API verwenden. Der 3P-Antwortinhalt antwortet auf die Aufrufanfrage und kann durch den 3P-Agenten unter Verwendung seiner eigenen Semantikverarbeitungsmaschinen, seiner eigenen Semantikmodelle und/oder anderer 3P-Agenten spezifischer Komponente(n) erzeugt werden. Bei einigen Implementierungen basiert der 3P-Antwortinhalt weiterhin auf dem Wert (Werten) für den Parameter (die Parameter), der (die) mit der Aufrufanfrage beim Block 280 geliefert sind.
-
Bei Block 284 liefert das System eine Ausgabe, die auf dem 3P-Antwortinhalt basiert. Beispielsweise kann die Ausgabe der 3P-Antwortinhalt oder eine Umwandlung (z. B. eine Umwandlung von Text in Sprache) des 3P-Antwortinhalts sein. Die Ausgabe wird zur Präsentation (z. B. akustisch oder graphisch) über die Client-Vorrichtung geliefert.
-
Bei einem Block 286 wartet das System auf eine zusätzliche Eingabe vom Anwender in Antwort auf die beim Block 284 gelieferte Ausgabe.
-
Beim einen Block 288 empfängt das System die zusätzliche Eingabe. Beispielsweise kann das System eine zusätzliche Eingabe empfangen, die eine Eingabe in natürlicher Sprache in freier Form ist.
-
Bei einem Block 290 bestimmt das System, ob die empfangene zusätzliche Eingabe zu dem 3P-Agenten gerichtet ist, der bei einer letzten Iteration des Blocks 280 aufgerufen ist. Wenn es so ist, sendet das System entsprechenden Inhalt (z. B. die empfangene zusätzliche Eingabe, eine Umwandlung davon und/oder Annotationen davon) zum 3P-Agenten. Das System geht dann weiter zu einer weiteren Iteration des Blocks 282 und empfängt vom 3P-Agenten weiteren Antwortinhalt, der auf das Senden beim Block 292 antwortet. Mehrere Iterationen der Blöcke 282, 284, 286, 288, 290 und 292 können durchgeführt werden, um zu ermöglichen, dass sich der Anwender effektiv an einem Dialog mit dem 3P-Agenten beteiligt, während der automatisierte Assistent als ein Vermittler dient. Wie es hierin beschrieben ist, kann das System bei einigen Implementierungen tatsächlich den Dialog zu dem 3P-Agenten beim Block 280 transferieren und kann zum Block 250 zurückkehren (und/oder einem anderen Block), wenn der Dialog einmal zurück zum System transferiert ist. Bei einigen von diesen Implementierungen können die Blöcke 282, 284, 286, 288, 290, 292 und/oder 294 weggelassen sein.
-
Bei einigen Implementierungen kann das System beim Block 290 bestimmen, ob die empfangene zusätzliche Eingabe zu dem 3P-Agenten gerichtet ist, basierend auf der Aufrufanfrage, die beim Block 280 gesendet ist, oder dem 3P-Antwortinhalt, der beim Block 282 empfangen ist. Beispielsweise kann das System beim Block 280 eine Aufrufanfrage mit allen obligatorischen Parametern und/oder diese Anfragen, dass der 3P-Agent die beabsichtigte Aktion durchführt, senden, ohne dass sich der 3P-Agent an einem Dialog beteiligt. Bei einem solchen Beispiel kann das System resultierend bei einem Block 290 bestimmen, dass die zusätzliche Eingabe nicht zum 3P-Agenten gerichtet ist. Als ein weiteres Beispiel kann der 3P-Antwortinhalt, der beim Block 282 empfangen ist, anzeigen, ob der 3P-Agent eine weitere Spracheingabe erwartet, die zum 3P-Agenten gerichtet ist. Beispielsweise kann der 3P-Antwortinhalt anzeigen, ob es eine ”Frage”/”Aufforderung” ist, die eine weitere auf einen 3P-Agenten bezogene Spracheingabe erfordert (in welchem Fall eine weitere Eingabe, die zum 3P-Agenten gerichtet ist, erwartet wird), oder alternativ eine ”Erzählung”/”Auflösung” ist, die keine weitere auf einen 3P-Agenten bezogene Spracheingabe erwartet (in welchem Fall eine weitere Eingabe, die zu dem 3P-Agenten gerichtet ist, nicht erwartet wird).
-
Bei einigen Implementierungen kann selbst dann, wenn das System eine zusätzliche Eingabe erwartet, die zum ausgewählten 3P-Agenten gerichtet ist, in Abhängigkeit von der beim Block 288 empfangenen aktuellen Eingabe, es nichtsdestoweniger bestimmen, dass die empfangene zusätzliche Eingabe nicht zum 3P-Agenten gerichtet ist. Beispielsweise kann das System bestimmen, dass Eingaben, wie beispielsweise ”Stopp”, ”Beenden”, ”Sprechen zu einem anderen 3P-Agenten”, ”Anderer 3P-Agent”, etc., nicht zum ausgewählten 3P-Agenten gerichtet sind.
-
Wenn das System beim Block 290 bestimmt, dass die empfangene zusätzliche Eingabe nicht zum 3P-Agenten gerichtet ist, geht das System weiter zu einem Block 294. Beim Block 294 bestimmt das System, ob die empfangene zusätzliche Eingabe einen Wunsch anzeigt, zu einem anderen 3P-Agenten umzuschalten. Wenn es so ist und wenn ein zusätzlicher 3P-Agent (zusätzliche 3P-Agenten) verfügbar ist (sind), der (die) die beabsichtigte Aktion mit einem bestimmten Wert (bestimmten Werten) durchführen kann (können), kann das System zum Block 280 weitergehen und sendet eine Aufrufanfrage zu einem der zusätzlichen 3P-Agenten. Das System kann den bestimmten Wert (die bestimmten Werte) mit der Aufrufanfrage zum zusätzlichen 3P-Agenten beim Block 280 enthalten. Darüber hinaus kann (können) bei einigen Implementierungen ein zusätzlicher Wert (zusätzliche Werte) während einer Interaktion mit dem 3P-Agenten bestimmt worden sein, und dieser Wert (diese Werte) auch in der Aufrufanfrage zum zusätzlichen 3P-Agenten geliefert sein. Welcher von mehreren zusätzlichen 3P-Agenten zum Senden der zusätzlichen Aufrufanfrage ausgewählt wird (werden), kann auf der zusätzlichen Eingabe selbst basieren (z. B. wenn sie auf einen der zusätzlichen 3P-Agenten durch einen Namen oder eine Charakteristik Bezug nimmt) und/oder auf andere Faktoren basieren (z. B. den nächsten populärsten 3P-Agenten, wenn die zusätzliche Eingabe ”Nächster Agent” ist).
-
Wenn das System beim Block 294 bestimmt, dass die empfangene zusätzliche Eingabe nicht einen Wunsch anzeigt, zu einem anderen 3P-Agenten umzuschalten, geht das System weiter zu einem Block 252.
-
2B ist ein Ablaufdiagramm, das ein Beispiel 200B von einigen Implementierungen von gewissen Blöcken des Verfahrens 200 der 2A darstellt. Der Annehmlichkeit halber sind die Operationen des Ablaufdiagramms unter Bezugnahme auf ein System beschrieben, das die Operationen durchführt. Dieses System kann verschiedene Komponenten von verschiedenen Computersystemen enthalten, wie beispielsweise die 3P-Agentenmaschine 120 und/oder eine oder mehrere andere Komponenten des automatisierten Assistenten 110. Darüber hinaus ist es, während Operationen des Beispiels 200B in einer speziellen Reihenfolge gezeigt sind, dies nicht als beschränkend gemeint. Eine oder mehrere Operationen können neu angeordnet, weggelassen oder hinzugefügt sein.
-
Das Beispiel 200B stellt einige spezielle Beispiele der Blöcke 252, 260, 270 und 280 der 2A zur Verfügung.
-
Der Block 252A der 2B ist ein spezielles Beispiel des Blocks 252 der 2A. Beim Block 252A wählt das System eine beabsichtigte 3P-Aktion basierend auf einer Anwendereingabe aus.
-
Blöcke 260A, 260B und 260C der 2B sind ein spezielles Beispiel des Blocks 260 der 2A. Beim Block 260A identifiziert das System obligatorische und optionale Parameter für die beim Block 252A ausgewählte beabsichtigte Aktion.
-
Beim Block 260B bestimmt das System den Wert (die Werte) für einen Parameter (Parameter) und speichert ihn (sie), wenn es welche gibt, die in der beim Block 252A empfangenen Anwendereingabe angezeigt sind.
-
Beim Block 260C bestimmt das System, ob alle obligatorischen Parameter für die beabsichtigte Aktion bei der letzten Iteration des Blocks 260B bestimmt worden sind. Wenn sie es nicht sind, geht das System weiter zu Blöcken 262 und 264 der 2A, geht dann zurück zum Block 260B, um Parameter (wenn es welche gibt) in einer weiteren Anwendereingabe, die im Block 264 geliefert ist, zu bestimmen und zu speichern.
-
Wenn bei einer Iteration des Blocks 260C alle obligatorischen Parameter für die beabsichtigte Aktion bestimmt worden sind, geht das System weiter zu einem Block 270A. Beim Block 270A bestimmt das System, ob ein einzelner 3P-Agent für die beabsichtigte Aktion auflösbar ist, basierend auf dem Wert (den Werten), der (die) bestimmt und gespeichert bei einer oder mehreren Iterationen des Blocks 260B, vergangenen Anwenderinteraktionen und/oder anderen Kriterien ist. Wenn es nicht so ist, geht das System weiter zu Blöcken 272 und 274 der 2A, geht dann weiter zurück zum Block 270A, um zu bestimmen, ob eine im Block 274 gelieferte weitere Anwendereingabe eine Auflösung eines einzelnen 3P-Agenten ermöglicht.
-
Wenn bei einer Iteration des Blocks 270A ein einzelner 3P-Agent auflösbar ist, geht das System weiter zu einem Block 280A. Beim Block 280A sendet das System zum einzelnen 3P-Agenten eine Aufrufanfrage, die die Parameter enthält, die bei einer oder mehreren Iterationen des Blocks 260B bestimmt und gespeichert sind. Das System geht dann weiter zum Block 282 der 2A.
-
3 ist ein Ablaufdiagramm, das ein beispielhaftes Verfahren 300 darstellt, das durch einen Agenten einer dritten Partei durchgeführt werden kann, gemäß hierin offenbarten Implementierungen. Das System kann verschiedene Komponenten von verschiedenen Computersystemen enthalten, wie beispielsweise eine oder mehrere Komponenten von einem der 3P-Agenten 140A–N. Darüber hinaus ist es, während Operationen des Verfahrens 300 in einer speziellen Reihenfolge gezeigt sind, dies nicht als beschränkend gemeint. Eine oder mehrere Operationen können neu angeordnet, weggelassen oder hinzugefügt sein.
-
Bei einem Block 352 empfängt das System eine Aufrufanfrage von einem automatisierten Assistenten. Die Aufrufanfrage kann eine beabsichtigte Aktion enthalten (z. B. wenn das System mehrere beabsichtigte Aktionen durchführen kann), einen Wert (Werte) für einen Parameter (Parameter) der beabsichtigten Aktion und/oder andere Daten. Bei einigen Implementierungen kann die Aufrufanfrage anzeigen, dass das System den Dialog effektiv oder aktuell übernehmen sollte. Wenn die Aufrufanfrage anzeigt, dass das System den Dialog aktuell übernehmen sollte, kann das System eine direkte Netzwerkkommunikationssession mit einer entsprechenden Client-Vorrichtung einrichten. Wenn die Aufrufanfrage anzeigt, dass das System den Dialog effektiv übernehmen sollte, kann das System den Dialog übernehmen, während es noch mit der Komponente kommuniziert, die die Aufrufanfrage und/oder eine zugehörige Komponente lieferte.
-
Bei einem Block 354 erzeugt das System Antwortinhalt basierend auf einem Wert (Werten) für einen Parameter (Parameter), der (die) in der Aufrufanfrage enthalten ist (sind), wie beispielsweise Werten für obligatorische und/oder optionale Parameter.
-
Bei einem Block 356 liefert das System den Antwortinhalt. Beispielsweise dort, wo die Aufrufanfrage anzeigt, dass das System den Dialog effektiv übernehmen sollte und/oder nur eine beabsichtigte Aktion durchführen sollte, ohne sich an einem Dialog zu beteiligen, kann das System den Antwortinhalt zu der Komponente (oder einer zugehörigen Komponente) senden, die die Aufrufanfrage sendete. Ebenso kann das System beispielsweise dort, wo die Aufrufanfrage anzeigt, dass das System den Dialog aktuell übernehmen sollte, den Antwortinhalt zu einer entsprechenden Client-Vorrichtung senden.
-
Bei einem Block 358 empfängt das System weiteren Inhalt, der in Antwort auf den Antwortinhalt ist, der beim Block 356 geliefert ist. Der weitere Inhalt kann beispielsweise eine Anwendereingabe enthalten, die in Antwort auf den Antwortinhalt geliefert ist, eine Umwandlung von dieser Anwendereingabe und/oder Annotationen von dieser Anwendereingabe. Beispielsweise dort, wo ein automatisierter Assistent oder eine andere Komponente als ein Vermittler dient, kann der automatisierte Assistent eine Umwandlung von dieser Anwendereingabe und/oder Annotationen von dieser Anwendereingabe liefern.
-
Bei einem Block 360 erzeugt das System weiteren Antwortinhalt basierend auf dem empfangenen weiteren Inhalt des Blocks 358.
-
Bei einem Block 362 liefert das System den weiteren Antwortinhalt, der beim Block 360 erzeugt ist. Das System kann dann optional zum Block 358 zurückkehren und eine zusätzliche Iteration der Blöcke 358, 360 und 362 durchführen. Es wird verstanden, dass das System bei einigen Implementierungen mehrere Iterationen der Blöcke 358, 360 und 362 durchführen kann, während es einen Dialog lenkt und an diesem beteiligt ist. Das System kann das Verfahren 300 in Reaktion auf eine Erfüllung von einer oder mehreren Bedingungen verlassen (z. B. eine Durchführung der beabsichtigten Aktion), und kann optional eine Kommunikation zu der Komponente senden, die die Aufrufanfrage des Blocks 352 lieferte, um anzuzeigen, dass das System das Verfahren 300 verlässt.
-
Blöcke 358, 360 und 362 sind in 3 in gestrichelten Linien dargestellt, um anzuzeigen, dass es sein kann, dass sie in einigen Situationen nicht durchgeführt werden. Beispielsweise kann, wie es hierin beschrieben ist, das System bei einigen Implementierungen eine beabsichtigte Aktion in Antwort auf eine Aufrufanfrage des Blocks 352 durchführen, einen Antwortinhalt beim Block 354 erzeugen, der anzeigt, dass eine beabsichtigte Aktion durchgeführt worden ist, diesen Antwortinhalt beim Block 356 liefern, und dann keinen weiteren Inhalt in Assoziation mit dieser Aufrufanfrage empfangen.
-
Die 4, 5 und 6 stellen jeweils einen Anwender 101, eine sprachfähige Client-Vorrichtung 406 und ein Beispiel eines Dialogs, der zwischen dem Anwender 101, einem automatisierten Assistenten, der mit der Client-Vorrichtung 406 assoziiert ist, und einem Agenten einer dritten Partei erfolgen kann, darstellt. Die Client-Vorrichtung 406 enthält ein oder mehrere Mikrofone und einen oder mehrere Lautsprecher. Ein oder mehrere Aspekte des automatisierten Assistenten 110 der 1 können auf der Client-Vorrichtung 406 und/oder auf einer oder mehreren Computervorrichtungen, die in Netzwerkkommunikation mit der Client-Vorrichtung 406 sind, implementiert sein. Demgemäß wird der Einfachheit bezüglich einer Erklärung in der Beschreibung der 4, 5 und 6 auf den automatisierten Assistenten 110 Bezug genommen.
-
In 4 liefert der Anwender eine gesprochene Eingabe 480A von ”Kaufe 2 Karten für Erwachsene für den Film A für heute Abend”. Eine Spracheingabe entsprechend der gesprochenen Eingabe wird durch die Vorrichtung 606 erzeugt und zum automatisierten Assistenten 110 geliefert (z. B. als Streaming-Spracheingabe). Der automatisierte Assistent 110 kann die Spracheingabe in Text umwandeln und bestimmen, dass der Text eine beabsichtigte Aktion von ”Kaufen von Karten für einen Film” anzeigt. Der automatisierte Assistent 110 kann weiterhin bestimmen, dass der Text einen Wert von ”2” für den Parameter von ”Anzahl von Karten für Erwachsene” anzeigt, und einen Wert von ”Film A” (oder einen assoziierten Identifizierer) für den Parameter von ”Filmtitel”.
-
Der automatisierte Assistent 110 kann weiterhin einen zusätzlichen obligatorischen Parameter von ”Theaterstandort” bestimmen, der für die beabsichtigte Aktion ”Kaufen von Karten für einen Film” definiert ist, der durch die gesprochene Eingabe 480A nicht spezifiziert ist. In Reaktion darauf kann der automatisierte Assistent 110 die Aufforderung 482A ”Welches Theater” erzeugen und liefern, um einen Wert für den obligatorischen Parameter zu erbitten.
-
In Reaktion auf die Antwortausgabe 482A liefert der Anwender eine weitere gesprochene Eingabe 480B von ”Baxter Avenue”. Eine Spracheingabe entsprechend der gesprochenen Eingabe wird durch die Vorrichtung 606 erzeugt und zum automatisierten Assistenten 110 geliefert. Der automatisierte Assistent 110 kann die Spracheingabe in Text umwandeln und basierend auf dem Text ”Baxter Avenue Theater” (oder einen assoziierten Identifizierer) als einen Wert für den obligatorischen Parameter von ”Theaterstandort” bestimmen.
-
Der automatisierte Assistent 110 kann weiterhin bestimmen, dass zwei 3P-Agenten (”3P1” und ”3P2”) dazu fähig sind, die beabsichtigte Aktion ”Kaufen von Karten für einen Film” mit den Werten von ”2”, ”Film A” und ”Baxter Avenue Theater” durchzuführen. Bei einigen Implementierungen kann der automatisierte Assistent 110 diejenigen aus einer größeren Gruppe von 3P-Agenten, die die beabsichtigte Aktion ”Kaufen von Karten für einen Film” durchführen können, basierend darauf auswählen, dass die ausgewählten 3P-Agenten dazu fähig sind, die beabsichtigte Aktion mit den bestimmten Werten durchzuführen, während andere der größeren Gruppe dies nicht können.
-
Der automatisierte Assistent 110 erzeugt und liefert weiterhin die Aufforderung 482B, die diese ausgewählten 3P-Agenten identifiziert, sowie Werte für einen zusätzlichen nicht spezifizierte Parameter (Preis) für jeden der drei 3P-Agenten.
-
In Reaktion auf die Antwortausgabe 482B liefert der Anwender eine weitere gesprochene Eingabe 480C von ”Ich werde 3P2 verwenden”. Eine Spracheingabe entsprechend der gesprochenen Eingabe wird durch die Vorrichtung 606 erzeugt und zum automatisierten Assistenten 110 geliefert. Der automatisierte Assistent 110 kann die Spracheingabe in Text umwandeln und basierend auf dem Text, der den 3P-Agenten bestimmt, wird 3P2 ausgewählt. Der automatisierte Assistent 110 kann dann eine Aufrufanfrage, zusammen mit bestimmten Werten für Parameter, zum 3P-Agenten 3P2 senden.
-
Der 3P-Agent 3P2 übernimmt (d. h. lenkt) dann effektiv oder aktuell den Dialog und eine Aufforderung 482C wird basierend auf einem Antwortinhalt geliefert, der durch den 3P-Agenten 3P2 erzeugt ist. Die Aufforderung 482C kann direkt durch den 3P-Agenten 3P2 und/oder über den automatisierten Assistenten 110 geliefert werden.
-
In Reaktion auf die Antwortausgabe 482B liefert der Anwender eine weitere gesprochene Eingabe 480C von ”Kaufe die Karten für 7.00”. Eine Spracheingabe entsprechend der gesprochenen Eingabe wird durch die Vorrichtung 606 erzeugt und zum automatisierten Assistenten 110 geliefert (der sie und/oder eine Umwandlung dann zum 3P-Agenten weiterleitet), und/oder direkt zum 3P-Agenten 3P2.
-
Der 3P-Agent 3P2 erzeugt einen weiteren Antwortinhalt basierend auf der gesprochenen Eingabe 480D (und/oder einer Umwandlung davon) und eine Antwortausgabe 482D wird basierend auf diesem Antwortinhalt geliefert. Ein Lenken des Dialogs wird dann zum automatisierten Assistenten 110 zurückgebracht.
-
Der Anwender liefert dann eine gesprochene Eingabe 480E von ”Buche einen Tisch für 2 um 5:30 bei Hypothetical Café”. Eine Spracheingabe entsprechend der gesprochenen Eingabe wird durch die Vorrichtung 606 erzeugt und zum automatisierten Assistenten 110 geliefert. Der automatisierte Assistent 110 kann die Spracheingabe in Text umwandeln und bestimmen, dass der Text eine beabsichtigte Aktion von ”Restaurantreservierung” anzeigt. Der automatisierte Assistent 110 kann weiterhin bestimmen, dass der Text alle obligatorischen Parameter für die beabsichtigte Aktion anzeigt. Weiterhin kann der automatisierte Assistent 110 automatisch einen speziellen 3P-Agenten auswählen, um ihn aufzurufen, um die beabsichtigte Aktion durchzuführen, mit den Parametern. Beispielsweise kann der spezielle 3P-Agent basierend darauf ausgewählt werden, dass er der einzige 3P-Agent ist, der die beabsichtigte Aktion durchführen kann, oder basierend auf Anwenderaktionen und/oder einer Eingabe, die anzeigt, dass der spezielle 3P-Agent für die beabsichtigte Aktion bevorzugt ist. In Reaktion auf einen Aufruf führt der spezielle 3P-Agent die beabsichtigte Aktion durch und sendet einen Antwortinhalt zum automatisierten Assistenten 110, der die Durchführung bestätigt, und/oder andere Daten. Der automatisierte Assistent 110 liefert dann eine Antwortausgabe 482E, die anzeigt, dass die beabsichtigte Aktion durch den speziellen 3P-Agenten durchgeführt wurde, und zusätzliche Daten, die durch den 3P-Agenten geliefert sind (”Eine Email-Bestätigung ist auf dem Weg”).
-
In 5 ist eine gesprochene Eingabe 580A ähnlich einer gesprochenen Eingabe 480A (4), spezifiziert aber nicht den obligatorischen Parameter von ”Filmtitel”. In Reaktion darauf liefert der automatisierte Assistent eine Aufforderung 582A, die Werte für die beiden Parameter ”Theaterstandort” und ”Filmtitel” erbittet.
-
Der Anwender liefert dann eine gesprochene Eingabe 580B, die Werte für beide Parameter spezifiziert. Der automatisierte Assistent 110 bestimmt, dass von mehreren 3P-Agenten für ”Kaufen von Karten für einen Film” der 3P-Agent 3P1 der einzige ist, der die beabsichtigte Aktion mit den Werten durchführen kann, die basierend auf den gesprochenen Eingaben 580A und 580B bestimmt sind. Der automatisierte Assistent 110 liefert eine Ausgabe 582B, die dies anzeigt und die anzeigt, dass der Anwender zum 3P-Agenten 3P1 weitergeleitet werden wird. Bei anderen Implementierungen kann die Ausgabe 582B nicht geliefert werden und der Anwender stattdessen direkt zum 3P-Agenten 3P1 weitergeleitet werden.
-
Der automatisierte Assistent 110 ruft den 3P-Agenten 3P1 mit den bestimmten Werten auf und eine Aufforderung 582C wird basierend auf einem Antwortinhalt vom 3P-Agenten 3P1 geliefert. Die gesprochene Eingabe 580C bestätigt, dass der Anwender wünscht, Karten für einen Film vom 3P-Agenten 3P1 zu kaufen. Eine Ausgabe 582D wird dann basierend auf einem Antwortinhalt vom 3P-Agenten 3P1 geliefert, um den Kauf zu bestätigen.
-
6 stellt gesprochene Eingaben 680A–F und Antwortausgaben 682A–E dar und eine Situation, in welcher ein Agent einer dritten Partei 3P4 anfänglich aufgerufen wird und den Dialog bei den Ausgaben 682C und 682D lenkt. Jedoch interveniert der automatisierte Assistent 110 in Reaktion auf die gesprochene Eingabe 680E, die einen Wunsch anzeigt, zu dem anderen fähigen 3P-Agenten 3P5 umzuschalten, und ruft den 3P-Agenten 3P5 auf, während er den 3P-Agenten 3P4 vom Dialog beendet. Eine Ausgabe 682E wird dann basierend auf einem Antwortinhalt vom 3P-Agenten 3P5 geliefert. Es ist anzumerken, dass beim Aufrufen des 3P-Agenten 3P5 der automatisierte Assistent 110 Werte für Parameter liefert, die basierend auf gesprochenen Eingaben 680B und 680D bestimmt sind. Demgemäß kann der 3P-Agent 3P5 einen Antwortinhalt erzeugen, der einen Wert (”Großes Auto”) für einen Parameter (”Autogröße”) berücksichtigt, der während eines Dialogs bestimmt ist, der durch den 3P-Agenten 3P4 gelenkt ist. Dies kann zu einem verbesserten Anwendererlebnis führen und kann Computer-Ressourcen verringern (z. B. die sonst verbraucht werden würden, wenn der 3P-Agent 3P5 einen Antwortinhalt erzeugen müsste, der zu einem Wert für den Parameter ”Autogröße” aufforderte).
-
7 stellt eine weitere Client-Vorrichtung 706 und einen Anzeigebildschirm 740 der Client-Vorrichtung 706 dar. Die Client-Vorrichtung 706 kann den automatisierten Assistenten 110 enthalten und/oder in Kommunikation mit diesem sein. Der Anzeigebildschirm 740 enthält ein Antwortschnittstellenelement 788, das der Anwender auswählen kann, um eine Anwendereingabe über eine virtuelle Tastatur zu erzeugen, und ein Sprachantwortschnittstellenelement 789, das der Anwender auswählen kann, um eine Anwendereingabe über ein Mikrofon zu erzeugen. Bei einigen Implementierungen kann der Anwender eine Anwendereingabe über das Mikrofon ohne eine Auswahl des Sprachantwortschnittstellenelements 789 erzeugen. Beispielsweise kann während der Dialogsession ein aktives Überwachen für eine akustische Anwenderschnittstelleneingabe über das Mikrofon erfolgen, um die Notwendigkeit für den Anwender zu vermeiden, das Sprachantwortschnittstellenelement 789 auszuwählen. Bei einigen von diesen und/oder bei anderen Implementierungen kann das Sprachantwortschnittstellenelement 789 weggelassen werden. Darüber hinaus kann das Antwortschnittstellenelement 788 bei einigen Implementierungen zusätzlich und/oder alternativ weggelassen werden (z. B. der Anwender kann nur eine akustische Anwenderschnittstelleneingabe liefern). Der Anzeigebildschirm 740 enthält auch Systemschnittstellenelemente 781, 782, 783, mit denen eine Interaktion durch den Anwender erfolgen kann, um zu veranlassen, dass die Client-Vorrichtung 710 eine oder mehrere Aktionen durchführt.
-
In 7 ist der Dialog ähnlich demjenigen der 4 und tritt über eine allgemeine Schnittstelle für einen automatisierten Assistenten wie in 4 auf (obwohl es eine unterschiedliche Schnittstelle von derjenigen der 4 ist). Jedoch stellt 7 einige Beispiele davon dar, wie Interaktionen sich unterscheiden können, wenn unterschiedliche Schnittstellen verwendet werden und/oder unterschiedliche Anwenderschnittstelleneingabevorrichtungen verfügbar sind.
-
In 7 liefert der Anwender eine getippte oder gesprochene Eingabe 780A von ”Kaufe 2 Karten für Erwachsene für den Film A für heute Abend”. Basierend auf der Eingabe kann der automatisierte Assistent 110 eine beabsichtigte Aktion von ”Kaufen von Karten für einen Film” bestimmen. Der automatisierte Assistent 110 kann weiterhin einen Wert von ”2” für den Parameter von ”Anzahl von Karten für Erwachsene” und einen Wert von ”Film A” (oder einen assoziierten Identifizierer) für den Parameter von ”Filmtitel” bestimmen.
-
Der automatisierte Assistent 110 kann weiterhin einen zusätzlichen obligatorischen Parameter von ”Theaterstandort” bestimmen, der für die beabsichtigte Aktion ”Kaufen von Karten für einen Film” definiert ist, der nicht durch die Eingabe 780A spezifiziert ist. In Reaktion darauf kann der automatisierte Assistent 110 die Aufforderung 782A erzeugen und liefern, einen Wert für den obligatorischen Parameter zu erbitten. Es wird angemerkt, dass der Anwender in 7 einen der unterstrichenen Ausdrücke ”Hier” ”Antippen” kann, um ein entsprechendes Theater auszuwählen, ohne eine weitere gesprochene oder getippte Texteingabe zu liefern. Jedoch liefert der Anwender stattdessen eine gesprochene oder getippte Eingabe 780B von ”Baxter Avenue”.
-
Basierend auf der Eingabe 780B kann der automatisierte Assistent 110 ”Baxter Avenue Theater” (oder einen assoziierten Identifizierer) als einen Wert für den obligatorischen Parameter von ”Theaterstandort” bestimmen. Der automatisierte Assistent 110 kann weiterhin bestimmen, dass zwei 3P-Agenten (”3P1” und ”3P2”) dazu fähig sind, die beabsichtigte Aktion ”Kaufen von Karten für einen Film” mit den Werten von ”2”, ”Film A” und ”Baxter Avenue Theater” durchzuführen.
-
Der automatisierte Assistent 110 erzeugt und liefert weiterhin die Aufforderung 782B, die diese ausgewählten 3P-Agenten identifiziert, sowie Werte für einen zusätzlichen nicht spezifizierten Parameter (Preis) für jeden de 3P-Agenten. Es wird angemerkt, dass der Anwender in 7 das unterstrichene ”3P1” ”Antippen” kann, um den entsprechenden Agenten auszuwählen, oder das unterstrichene ”3P2” ”Antippen” kann, um den entsprechenden Agenten auszuwählen. Der Anwender kann auch optional dazu fähig sein, eine gesprochene oder getippte Eingabe zu liefern.
-
Beim Beispiel der 7 tippt der Anwender auf den unterstrichenen ”3P2”. In Reaktion auf die Antworteingabe durch ”Antippen” wählt der automatisierte Assistent den 3P-Agenten 3P2 aus. Der automatisierte Assistent 110 kann dann eine Aufrufanfrage zum 3P-Agenten 3P2 zusammen mit bestimmten Werten für Parameter senden.
-
Der 3P-Agent 3P2 übernimmt dann effektiv oder aktuell den Dialog und eine Aufforderung 782C wird basierend auf einem Antwortinhalt geliefert, der durch den 3P-Agenten 3P2 erzeugt ist. Die Aufforderung 782C kann direkt durch den 3P-Agenten 3P2 und/oder über den automatisierten Assistenten 110 geliefert werden. Der Dialog kann weiterhin fortfahren, wie es durch die Ellipse in 7 angezeigt ist.
-
8 ist ein Blockdiagramm einer beispielhaften Computervorrichtung 810, die optional verwendet werden kann, um einen oder mehrere Aspekte der hierin beschriebenen Techniken durchzuführen. Bei einigen Implementierungen können eines oder mehrere von der Vorrichtung 106, dem automatisierten Assistenten 110, einem 3P-Agenten und/oder einer anderen Komponente (anderen Komponenten) eine oder mehrere Komponenten der beispielhaften Computervorrichtung 810 umfassen.
-
Die Computervorrichtung 810 enthält typischerweise wenigstens einen Prozessor 814, der mit einer Anzahl von peripheren Vorrichtungen über ein Bus-Untersystem 812 kommuniziert. Diese peripheren Vorrichtungen können ein Speicher-Untersystem 824 enthalten, einschließlich beispielsweise eines Speicher-Untersystems 825 und eines Dateien-Speicheruntersystems 826, Anwenderschnittstellenausgabevorrichtungen 820, Anwenderschnittstelleneingabevorrichtungen 822 und ein Netzwerkschnittstellen-Untersystem 816. Die Eingabe- und Ausgabevorrichtungen lassen eine Anwenderinteraktion mit der Computervorrichtung 810 zu. Ein Netzwerkschnittstellenuntersystem 816 stellt eine Schnittstelle zu äußeren Netzwerken zur Verfügung und ist mit entsprechenden Schnittstellenvorrichtungen in anderen Computervorrichtungen gekoppelt.
-
Die Anwenderschnittstelleneingabevorrichtungen 822 können eine Tastatur, Zeigevorrichtungen, wie beispielsweise eine Maus, einen Trackball, ein Touchpad oder ein Graphik-Tablet, einen Scanner, einen Berührungsbildschirm, der in die Anzeige eingebaut ist, Audio-Eingabevorrichtungen, wie beispielsweise Spracherkennungssysteme, Mikrofone und/oder andere Typen von Eingabevorrichtungen enthalten. Im Allgemeinen soll eine Verwendung des Ausdrucks ”Eingabevorrichtung” alle möglichen Typen von Vorrichtungen enthalten, und Arten, um Information in die Computervorrichtung 810 und auf ein Kommunikationsnetzwerk einzugeben.
-
Die Anwenderschnittstellenausgabevorrichtungen 820 können ein Anzeige-Untersystem, einen Drucker, eine Faxmaschine oder nichtvisuelle Anzeigen, wie beispielsweise Audio-Ausgabevorrichtungen, enthalten. Das Anzeige-Untersystem kann eine Kathodenstrahlröhre (CRT), eine Flachbildschirmvorrichtung, wie beispielsweise eine Flüssigkristallanzeige (LCD), eine Projektionsvorrichtung oder irgendwelche anderen Mechanismus zum Erzeugen eines sichtbaren Bildes enthalten. Das Anzeige-Untersystem kann auch eine nichtvisuelle Anzeige zur Verfügung stellen, wie beispielsweise über Audio-Ausgabevorrichtungen. Im Allgemeinen ist beabsichtigt, dass eine Verwendung des Ausdrucks ”Ausgabevorrichtung” alle möglichen Typen von Vorrichtungen enthält, und Arten, um eine Information von der Computervorrichtung 810 zum Anwender oder zu einer anderen Maschine oder Computervorrichtung auszugeben.
-
Das Speicher-Untersystem 824 speichert Programmier- und Datenkonstrukte, die die Funktionalität von einigen oder allen der hierin beschriebenen Module zur Verfügung stellen. Beispielsweise kann das Speicher-Untersystem 824 die Logik enthalten, um ausgewählte Aspekte des Verfahrens (der Verfahren) der 2A, 2B und/oder 3 durchzuführen.
-
Diese Softwaremodule werden allgemein durch einen Prozessor 814 allein oder in Kombination mit anderen Prozessoren ausgeführt. Der Speicher 825, der im Speicher-Untersystem 824 verwendet wird, kann eine Anzahl von Speichern enthalten, einschließlich eines Haupt-Direktzugriffsspeichers (RAM) 830 zur Speicherung von Anweisungen und Daten, während einer Programmausführung, und eines Nurlesespeichers (ROM) 832, in welchem feste Anweisungen gespeichert sind. Ein Dateien-Speicheruntersystem 826 kann eine dauerhafte Speicherung für Programm- und Datendateien zur Verfügung stellen und kann ein Festplattenlaufwerk, ein Diskettenlaufwerk zusammen mit assoziierten entfernbaren Medien, ein CD-ROM-Laufwerk, ein optisches Laufwerk oder entfernbare Medienkassetten enthalten. Die Module, die die Funktionalität von gewissen Implementierungen implementieren, können durch das Dateien-Speicheruntersystem 826 im Speicher-Untersystem 824 oder in anderen Maschinen, auf die durch den (die) Prozessor(en) 814 zugreifbar ist, gespeichert sein.
-
Das Bus-Untersystem 812 stellt einen Mechanismus zum Kommunizierenlassen der verschiedenen Komponenten und Untersysteme der Computervorrichtung 810 miteinander, wie es beabsichtigt ist, zur Verfügung. Obwohl das Bus-Untersystem 812 schematisch als einzelner Bus gezeigt ist, können alternative Implementierungen des Bus-Untersystems mehrere Busse verwenden.
-
Die Computervorrichtung 810 kann von variierenden Typen sein, einschließlich einer Workstation, eines Servers, eines Computer-Clusters, eines Bladeservers, einer Serverfarm oder irgendeines anderen Datenverarbeitungssystems oder einer Computervorrichtung. Aufgrund der andauernd sich ändernden Art von Computern und Netzwerken ist beabsichtigt, dass die Beschreibung der Computervorrichtung 810, die in 8 gezeigt ist, nur ein spezifisches Beispiel zu Zwecken eines Darstellens von einigen Implementierungen ist. Viele andere Konfigurationen der Computervorrichtung 810 sind möglich, die mehr oder weniger Komponenten als die in 8 gezeigte Computervorrichtung haben.
-
In Situationen, in welchen hierin diskutierte gewisse Implementierungen persönliche Information über Anwender sammeln oder verwenden können (wie z. B. Anwenderdaten, die aus anderen elektronischen Kommunikationen extrahiert sind, Information über ein soziales Netzwerk eines Anwenders, ein Standort eines Anwenders, eine Zeit eines Anwenders, biometrische Information eines Anwenders und Aktivitäten eines Anwenders und demographische Information), sind Anwendern eine oder mehrere Gelegenheiten zur Verfügung gestellt, zu kontrollieren, ob Information gesammelt wird, ob die persönliche Information gespeichert wird, ob die persönliche Information verwendet wird und wie die Information über den Anwender gesammelt, gespeichert und verwendet wird. Das bedeutet, dass die hierin diskutierten Systeme und Verfahren persönliche Information eines Anwenders nur auf ein Empfangen einer expliziten Autorisierung von den relevanten Anwendern sammeln, Speichern und/oder Verwenden, dies zu tun. Beispielsweise ist ein Anwender mit einer Kontrolle darüber versehen, ob Programme oder Merkmale Anwenderinformation über diesen speziellen Anwender oder andere Anwender, relevant für das Programm oder das Merkmal, sammeln. Jedem Anwender, für welchen persönliche Information zu sammeln ist, wird eine oder mehrere Optionen präsentiert, um eine Kontrolle über die Informationssammlung relevant für diesen Anwender zuzulassen, um eine Erlaubnis oder Autorisierung diesbezüglich zur Verfügung zu stellen, ob die Information gesammelt wird, und diesbezüglich, bis zu welchen Teilbereichen der Information zu sammeln sind. Beispielsweise kann Anwendern eine oder mehrere solche Kontrolloptionen über ein Kommunikationsnetzwerk zur Verfügung gestellt werden. Zusätzlich können gewisse Daten auf eine oder mehrere Arten behandelt werden, bevor sie gespeichert oder verwendet werden, so dass persönlich identifizierbare Information entfernt wird. Als ein Beispiel kann eine Anwenderidentität so behandelt werden, dass keine persönlich identifizierbare Information bestimmt werden kann. Als ein weiteres Beispiel kann ein geographischer Standort eines Anwenders zu einem größeren Bereich verallgemeinert werden, so dass der spezielle Standort eines Anwenders nicht bestimmt werden kann.
-
Einige Implementierungen sind auf einen selektiven Aufruf eines speziellen Agenten einer dritten Partei (3P) durch einen automatisierten Assistenten gerichtet, um eine beabsichtigte Aktion zu erreichen, die durch den automatisierten Assistenten bestimmt ist, während eines dynamischen Dialogs zwischen dem automatisierten Assistenten und einem Anwender. Bei einigen von diesen Implementierungen wird der spezielle 3P-Agent mit einem Wert (Werten) für einen Parameter (Parameter) aufgerufen, der (die) während des dynamischen Dialogs bestimmt wird (werden); und/oder der spezielle 3P-Agent wird aus einer Vielzahl von Kandidaten-3P-Agenten für einen Aufruf basierend auf dem bestimmten Wert (den bestimmten Werten) für den Parameter (die Parameter) und/oder basierend auf anderen Kriterien ausgewählt. Bei einigen von diesen Implementierungen ruft der automatisierte Assistent den speziellen 3P-Agenten durch Senden einer 3P-Aufrufanfrage zum speziellen 3P-Agenten auf, die den bestimmten Wert (die bestimmten Werte) für den Parameter (die Parameter) enthält. Dies kann ermöglichen, dass die beabsichtigte Aktion über den speziellen 3P-Agenten schneller erreicht wird, was verschiedene Computer-Ressourcen einsparen kann.
-
Während mehrere Implementierungen hierin beschrieben und dargestellt worden sind, können eine Vielfalt von anderen Einrichtungen und/oder Strukturen zum Durchführen der Funktion und/oder zum Erhalten der Ergebnisse und/oder einer oder mehrerer der Vorteile, die hierin beschrieben sind, verwendet werden, und jede von solchen Variationen und/oder Modifikationen wird derart angesehen, dass sie innerhalb des Schutzumfangs der hierin beschriebenen Implementierungen ist. Allgemeiner wird gemeint, dass alle Parameter, Dimensionen, Materialien und Konfigurationen, die hierin beschreiben sind, beispielhaft sind und dass die tatsächlichen Parameter, Dimensionen, Materialien und/oder Konfigurationen von der spezifischen Anwendung oder den spezifischen Anwendungen abhängen werden, für welche die Lehren verwendet wird/werden. Fachleute auf dem Gebiet werden unter Verwendung von nicht mehr als routinemäßigem Experimentieren viele Äquivalente zu den spezifischen Implementierungen, die hierin beschrieben sind, erkennen oder dazu fähig sein, diese zu bestimmen. Es ist daher zu verstehen, dass die vorangehenden Implementierungen nur anhand eines Beispiels präsentiert sind und dass, innerhalb des Schutzumfangs der beigefügten Ansprüche und der Äquivalente dazu, Implementierungen auf andere Weise ausgeführt werden können, als es spezifisch beschrieben und beansprucht ist. Implementierungen der vorliegenden Offenbarung sind jeweils einzeln auf ein Merkmal, ein System, einen Artikel, ein Material, eine Ausrüstung und/oder ein Verfahren gerichtet, wie es hierin beschrieben ist. Zusätzlich ist irgendeine Kombination von zwei oder mehreren solchen Merkmalen, Systemen, Artikeln, Materialien, Ausrüstungen und/oder Verfahren, wenn solche Merkmale, Systeme, Artikel, Materialien, Ausrüstungen und/oder Verfahren nicht wechselseitig inkonsistent sind, innerhalb des Schutzumfangs der vorliegenden Offenbarung enthalten.