In diesem Dokument werden die Verwendung der Microsoft Direct -Zeilen -API in einer nativen Reaktionsanwendung unter Verwendung von JavaScript, Axios und WebSocket zur Kommunikation mit einem Copilot Agent Bot.
1. Direktzeilengeheimnis: Erhalten Sie das direkte Zeilengeheimnis aus dem Coilot -Chat -Bot.
2. Umgebung der nativen Entwicklung von React Native: Richten Sie ein funktionierendes React Native Project ein.
3. Axios Bibliothek installiert: Fügen Sie Axios Ihren Projektabhängigkeiten mit NPM Axios oder Garn hinzu. Fügen Sie Axios hinzu.
4. WebSocket -Unterstützung: Stellen Sie sicher, dass die WebSocket -API mit Ihrer Anwendungsumgebung kompatibel ist.
5. Grundkenntnisse: Vertrautheit mit JavaScript, React Native und Restful Apis.
aktualisieren
starten Sie die Konversation
verbinden Sie die Konversation
Senden Sie Aktivität an den Bot
Empfangen Sie Aktivitäten aus dem Bot
beenden die Conversation
Verbindungsstatusüberwachung und Wiederverbindung
referenzen
Direct Line API erfordert ein Geheimnis, um sich zu authentifizieren. Erhalten Sie das Geheimnis aus dem Azure Bot Service Portal.
Token werden unter Verwendung des Geheimnisses generiert, um eine sichere Kommunikation zu initiieren.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };import axios aus 'axios'; const Generatetoken = Async (Secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; versuchen { const response = warte axios.post (url, {}, {{ Header: { Autorisierung: `Bearer $ {Secret}`,, }, }); return response.data.token; } catch (error) { console.Error ('Fehlergenerierung Token:', Fehler); Fehler werfen; } };
Token haben eine begrenzte Lebensdauer. Aktualisieren Sie sie, bevor sie ablaufen.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };const reproshtoken = async (token) => { const url = 'https://directline.botframework.com/v3/directline/tokens/refresh'; versuchen { const response = warte axios.post (url, {}, {{ Header: { Autorisierung: `Bearer $ {Token}`, }, }); return response.data.token; } catch (error) { console.Error ('Fehler erfrischend Token:', Fehler); Fehler werfen; } };
initiieren Sie ein Gespräch mit dem Bot mit dem Token.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };const startConveration = async (token) => { const url = 'https://directline.botframework.com/v3/directline/conversations'; versuchen { const response = warte axios.post (url, {}, {{ Header: { Autorisierung: `Bearer $ {Token}`, }, }); Rückgabeantwort.Data; } catch (error) { console.Error ('Fehler mit der Konversation:', Fehler); Fehler werfen; } };
Wenn die Verbindung verloren geht, können Sie mithilfe der ConversationID und WebSocket wieder verbinden.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };const wiederinctconversation = async (ConversationId, Token) => { const url = `https://directline.botframework.com/v3/directline/conversations/$ {ConversationID}? Watermark = 0`; versuchen { const response = warte axios.get (url, { Header: { Autorisierung: `Bearer $ {Token}`, }, }); Rückgabeantwort.Data; } catch (error) { console.Error ('Fehler wieder anschließen:', Fehler); Fehler werfen; } };
Benutzernachrichten oder Aktivitäten an den Bot senden.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };const sendActivity = async (ConversationId, Token, Aktivität) => { const url = `https://directline.botframework.com/v3/directline/conversations/$ {ConversationID}/Aktivitäten`; versuchen { const response = erwartet Axios.post (URL, Aktivität, {{ Header: { Autorisierung: `Bearer $ {Token}`, }, }); Rückgabeantwort.Data; } catch (error) { console.Error ('Fehlersenden Aktivität:', Fehler); Fehler werfen; } };
Verwenden Sie WebSocket, um in Echtzeit auf Bot -Antworten zu hören.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };const ConnectWebsocket = (Streamurl, OnMessage) => { const socket = new WebSocket (Streamurl); socket.onopen = () => { console.log ('WebSocket -Verbindung hergestellt.'); }; Socket.onMessage = (Ereignis) => { const data = json.parse (Ereignis.Data); console.log ('Nachricht empfangen:', Daten); OnMessage (Daten.aktivitäten); }; socket.onError = (error) => { console.Error ('WebSocket -Fehler:', Fehler); }; socket.onclose = (event) => { console.warn ('WebSocket -Verbindung geschlossen:', Ereignis); }; Rückgabe der Steckdose; };
Beenden Sie explizit ein Gespräch, indem Sie die Kommunikation einstellen.
Hinweis: Direkte Zeilen -API erfordert keinen expliziten API -Anruf, um eine Konversation zu "beenden".
Monitor WebSocket -Status und Fallback bei der Abfrage, wenn sie getrennt sind.
Code Beispiel:
import axios from 'axios'; const generateToken = async (secret) => { const url = 'https://directline.botframework.com/v3/directline/tokens/generate'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${secret}`, }, }); return response.data.token; } catch (error) { console.error('Error generating token:', error); throw error; } };const monitorConnection = (Socket, FallbackTopolling) => { socket.onclose = () => { console.warn ('WebSocket -Verbindung geschlossen. Zurück in die Umfrage zurückfallen.'); FallbackTopolling (); }; }; const polfForActivities = asynchronisch (ConversationId, Token) => { const url = `https://directline.botframework.com/v3/directline/conversations/$ {ConversationID}/Aktivitäten`; versuchen { const response = warte axios.get (url, { Header: { Autorisierung: `Bearer $ {Token}`, }, }); Return Response.Data.aktivitäten; } catch (error) { console.Error ('Fehlerabfragen für Aktivitäten:', Fehler); Fehler werfen; } };
Dieses Dokument enthält eine vollständige Anleitung zur Integration von Direktleitungs -API in eine reag -native Anwendung mit Axios und WebSocket. Befolgen Sie die umrissenen Schritte zum Authentifizieren, Verwalten von Gesprächen und die Kommunikation zuverlässig mit einem Copilot Agent Bot.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3