Publicar un copiloto a los canales de Azure Bot Service
Puede convertir a Conectar en su copiloto para los canales de Azure Bot Service existentes, lo que puede resultar útil si desea convertir a Conectar en su copiloto para los usuarios finales en los canales de Azure Bot Service. ...
Para agregar su copiloto a los canales de Azure Bot Service se requiere una experiencia de desarrollador considerable. Este artículo está dirigido a los administradores de TI o desarrolladores que cuentan con experiencia desarrollando y escribiendo código.
Propina
No es necesario que lea este documento para agregar su copiloto de Copilot Studio a su sitio web, Facebook o Microsoft Teams. Si su objetivo es conectarse a una aplicación nativa o basada en la web personalizada, sus desarrolladores pueden obtener más información en Publicar un copiloto a aplicaciones móviles o personalizadas.
Importante
Las instrucciones de esta sección requieren que usted o sus desarrolladores realicen tareas de desarrollo de software. Está destinado a profesionales de TI con experiencia, como administradores de TI o desarrolladores que tienen una sólida comprensión de las herramientas de desarrollo, las utilidades y los IDE.
Requisitos previos
- Una suscripción a Azure Bot Service.
- Un bot de Azure Bot Service con SDK v4.
- .NET Core SDK versión 2.1.
- Paquete Nuget Microsoft.Bot.Connector.DirectLine.
- Un copiloto creado en Copilot Studio que desea conectarse a un canal de Azure Bot Service.
- Publicar un copiloto en aplicaciones móviles o personalizadas.
Ejemplos de código
Los fragmentos de código que se utilizan en este documento son de un código de ejemplo de bot de retransmisión.
Referencias
Las instrucciones de este documento hacen referencia a los siguientes documentos:
- Implemente su bot en Azure para obtener instrucciones sobre cómo implementar Azure Conectar bot.
- Canales de Azure Bot Service para Conectar a cualquier canal compatible con el servicio Azure bot.
- Depuración de Azure Bot Service con el emulador para obtener instrucciones sobre cómo depurar Azure Bot Service bot.
Crear o usar un bot de Azure Bot Service existente
Necesita un bot de Azure Bot Service que pueda retransmitir conversaciones entre su copiloto de Copilot Studio y los canales de Azure Bot Service.
El código de muestra del relé bot es un buen punto de partida apuntar si no tiene un Azure Bot Service bot. existente. ... Está construido a partir de Microsoft Bot Framework código de muestrabot que se puede compilar e implementar en Azure Bot Service. El código de ejemplo está pensado para usarse como punto de partida y no directamente en la producción. Necesita agregar código y optimización para que coincida con las necesidades de su negocio.
Si ya tiene un bot de Azure Bot Service, debe agregar un conector y un código de Copilot Studio para administrar sesiones de conversación. A continuación, puede implementar el bot en Azure Bot Service y conectarse a canales con Azure Portal.
Obtener sus parámetros de copiloto de Copilot Studio
Para Conectar al copiloto que construiste con Copilot Studio, necesitas recuperar el nombre y el token de tu copiloto punto de conexión.
Copie el nombre de su copiloto en Copilot Studio.
En el menú de navegación, en Configuración, seleccione Canales.
Seleccione el canal al que desea conectarse. Este escenario utiliza Slack como ejemplo.
Para copiar y guardar el valor de Extremo de token, seleccione Copiar. Necesitas tu punto de conexión para que Conectar sea tu copiloto en el canal de Azure Bot Service.
Administrar sesiones de conversación con su copiloto de Copilot Studio
Puede haber varias conversaciones entre los canales de Azure Bot Service y la conexión Direct Line con su copiloto de Copilot Studio.
Su Azure Bot Service bot debe mapear y retransmitir la conversación del canal Azure Bot Service a la Direct Line conversación con el Copilot Studio copiloto y viceversa.
Ejemplo de código de muestra
El siguiente ejemplo utiliza ejemplos del código de ejemplo de un bot de retransmisión.
En cada nuevo inicio de conversación de canal de Azure Bot Service externo, inicie una conversación de copiloto de Copilot Studio. Consulte Obtener símbolo de Direct Line y Utilizar Direct Line para comunicarse con el copiloto para obtener instrucciones sobre cómo iniciar una nueva conversación con el bot.
using (var httpRequest = new HttpRequestMessage()) { httpRequest.Method = HttpMethod.Get; UriBuilder uriBuilder = new UriBuilder(TokenEndPoint); httpRequest.RequestUri = uriBuilder.Uri; using (var response = await s_httpClient.SendAsync(httpRequest)) { var responseString = await response.Content.ReadAsStringAsync(); string token = SafeJsonConvert.DeserializeObject<DirectLineToken>(responseString).Token; } } /// <summary> /// class for serialization/deserialization DirectLineToken /// </summary> public class DirectLineToken { public string Token { get; set; } }
// Use the retrieved token to create a DirectLineClient instance using (var directLineClient = new DirectLineClient(token)) { var conversation = await directLineClient.Conversations.StartConversationAsync(); string conversationtId = conversation.ConversationId; }
Para administrar varias sesiones, debe mantener una asignación de las conversaciones de canal externas de Azure Bot Service con las correspondientes conversaciones de copiloto de Copilot Studio. Una conversación de copiloto de Copilot Studio se puede identificar y conectar con dos propiedades:
ConversationtId
yToken
.Dictionary<string, PowerVirtualAgentsConversation> ConversationRouter = new Dictionary<string, PowerVirtualAgentsConversation>();
Para administrar el ciclo de vida de la conversación, actualice los tokens Direct Line o limpie conversaciones inactivas. Obtenga más información sobre la actualización de tokens en Actualizar token Direct Line. Una conversación de copiloto para respaldar la actualización de tokens se define de la siguiente manera: Copilot Studio Direct Line
/// <summary> /// Data model class for Copilot Studio copilot conversation /// </summary> public class PowerVirtualAgentsConversation { public string ConversationtId { get; set; } // The Copilot Studio copilot conversation ID retrieved from step 1 public string Token { get; set; } // The DirectLine token retrieved from step 1 public string WaterMark { get; set; } // Identify turn in a conversation public DateTime LastTokenRefreshTime { get; set; } = DateTime.Now; // Timestamp of last token refresh public DateTime LastConversationUpdateTime { get; set; } = DateTime.Now; // Timestamp of last active user message sent to copilot }
Cuando comienza una conversación nueva de copiloto de Copilot Studio, agregue un par de valores clave (
external_Azure_Bot_Service_channel_conversationID
,PowerVirtualAgentsConversation
) a la tabla de asignación.// After new Copilot Studio copilot conversation starts ConversationRouter[external_Azure_Bot_Service_channel_conversationID] = new PowerVirtualAgentsConversation() { Token = token, ConversationtId = conversationId, WaterMark = null, LastConversationUpdateTime = DateTime.Now, LastTokenRefreshTime = DateTime.Now, };
Para continuar en una conversación existente, tras recibir un nuevo mensaje de canal externo de Azure Bot Service, recupere la conversación existente de la tabla de asignación, retransmita la actividad de conversación externa a su copiloto de Copilot Studio y obtenga una respuesta.
El siguiente ejemplo muestra una conversación de retransmisión anulando el método ActivityHandler.OnMessageActivityAsync((ITurnContext<IMessageActivity>, CancellationToken)
// Invoked when a message activity is received from the user // Send the user message to Copilot Studio copilot and get response protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken) { // Retrieve copilot conversation from mapping table // If not exists for the given external conversation ID, start a new Copilot Studio copilot conversation ConversationRouter.TryGetValue(externalCID, out PowerVirtualAgentsConversation currentConversation) ? currentConversation : /*await StartBotConversationAsync(externalCID)*/; // Create DirectLine client with the token associated to current conversation DirectLineClient client = new DirectLineClient(currentConversation.Token); // Send user message using directlineClient await client.Conversations.PostActivityAsync(currentConversation.ConversationtId, new DirectLineActivity() { Type = DirectLineActivityTypes.Message, From = new ChannelAccount { Id = turnContext.Activity.From.Id, Name = turnContext.Activity.From.Name }, Text = turnContext.Activity.Text, TextFormat = turnContext.Activity.TextFormat, Locale = turnContext.Activity.Locale, }); // Update LastConversationUpdateTime for session management currentConversation.LastConversationUpdateTime = DateTime.Now; }
Consulte Utilizar Direct Line para comunicarse con el copiloto para ver cómo se obtiene la respuesta del copiloto de Copilot Studio. Cuando se reciba la respuesta del copiloto de Copilot Studio, consulte Analizar la carga de la conversación del copiloto para saber cómo analizar la respuesta a la respuesta del canal de Azure Bot Service externo.
Un ejemplo de análisis de respuesta se puede encontrar en el código de ejemplo de bot de retransmisión ResponseConverter.cs.
Implementar en Azure Bot Service
Una vez que tenga listo su bot de retransmisión de Azure Bot Service, debe implementar el bot en su Azure Bot Service.
Configurar canales de Azure Bot Service
Puede configurar los canales que desea usar iniciando sesión en el portal de Azure y seleccionando el grupo de recursos de Azure Bot Service en el que realizó la implementación. Vea las instrucciones concretas para cada canal en Canales de Azure Bot Service.