此文檔使用JavaScript,Axios和Websocket詳細介紹了Microsoft Direct Line API在React Natival應用程序中使用的用法,用於與Copilot Agent Bot進行通信。
先決條件
1。直接線秘密:
從Coilot Chat Bot中獲取直接線秘密。2。 React本地開發環境:
設置一個有效的反應本機項目。3。安裝了Axios庫:
使用NPM安裝Axios或Yarn Add Axios將Axios添加到您的項目依賴項中。4。 WebSocket支持:確保WebSocket API與您的應用程序環境兼容。
5。基本知識:熟悉JavaScript,React Native和Restful Apis。
目錄驗證
直接行API需要一個秘密才能進行身份驗證。從Azure Bot Service Portal獲取秘密。
2。產生令牌
從“ axios”導入axios; const generatoken = async(secret)=> { const url ='https://directline.botframework.com/v3/directline/tokens/generate'; 嘗試 { const響應=等待axios.post(url,{},{ 標題:{ 授權:`Bearer $ {secret}`, },, }); 返迴響應data.token; } catch(錯誤){ Console.Error('錯誤生成令牌:',錯誤); 投擲錯誤; } };
3。刷新令牌
const refreshtoken = async(token)=> { const url ='https://directline.botframework.com/v3/directline/tokens/refresh'; 嘗試 { const響應=等待axios.post(url,{},{ 標題:{ 授權:`bearer $ {token}`, },, }); 返迴響應data.token; } catch(錯誤){ Console.Error('錯誤刷新令牌:',錯誤); 投擲錯誤; } };
4.開始對話
const startConversation = async(token)=> { const url ='https://directline.botframework.com/v3/directline/conversations'; 嘗試 { const響應=等待axios.post(url,{},{ 標題:{ 授權:`bearer $ {token}`, },, }); 返迴響應data; } catch(錯誤){ Console.Error('錯誤啟動對話:',錯誤); 投擲錯誤; } };
5。重新連接對話
const reconnectConversation = async(ConvertyId,token)=> { const url =`https://directline.botframework.com/v3/directline/conversations/qunversations/qulthumqul$ {convertyId}? watermark = 0`; 嘗試 { const響應=等待axios.get(url,{ 標題:{ 授權:`bearer $ {token}`, },, }); 返迴響應data; } catch(錯誤){ Console.Error('錯誤重新連接對話:',錯誤); 投擲錯誤; } };
[2
使用WebSocket實時收聽bot響應。
[2
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; } };明確結束對話,停止通信。
9。連接狀態監控和重新連接
監視Websocket狀態,如果斷開連接,則將其退回到輪詢。
[2
[2
socket.onclose =()=> {
Console.Warn(“ Websocket Connection關閉。倒退到投票。”);
shoultbackTopolling();
};
};
const pollforactivities = async(conteractId,token)=> {
const url =`https://directline.botframework.com/v3/directline/conversations/qulqul$ {ConvertyId}/Activity`;
嘗試 {
const響應=等待axios.get(url,{
標題:{
授權:`bearer $ {token}`,
},,
});
返迴響應data.activities;
} catch(錯誤){
Console.Error(“活動錯誤輪詢:”,錯誤);
投擲錯誤;
}
};
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 startConversation = async (token) => { const url = 'https://directline.botframework.com/v3/directline/conversations'; try { const response = await axios.post(url, {}, { headers: { Authorization: `Bearer ${token}`, }, }); return response.data; } catch (error) { console.error('Error starting conversation:', error); throw error; } };
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3