」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在React Native中使用Axios調用Direct Line API的文檔

在React Native中使用Axios調用Direct Line API的文檔

發佈於2025-04-14
瀏覽:732

Documentation: Using Direct Line API in a React Native Application with Axios此文檔使用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。

目錄

驗證

[2

    參考
  1. 1。身份驗證

    直接行API需要一個秘密才能進行身份驗證。從Azure Bot Service Portal獲取秘密。
  2. 2。產生令牌

  3. 代幣是使用秘密來啟動安全通信的生成的。
  4. [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('錯誤生成令牌:',錯誤); 投擲錯誤; } };
  5. 3。刷新令牌

  6. 令牌的壽命有限。在它們到期之前刷新它們。
  7. [2

    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('錯誤刷新令牌:',錯誤); 投擲錯誤; } };
  8. 4.開始對話

  9. 使用令牌與機器人進行對話。
  10. [2

    const startConversation = async(token)=> { const url ='https://directline.botframework.com/v3/directline/conversations'; 嘗試 { const響應=等待axios.post(url,{},{ 標題:{ 授權:`bearer $ {token}`, },, }); 返迴響應data; } catch(錯誤){ Console.Error('錯誤啟動對話:',錯誤); 投擲錯誤; } };
  11. 5。重新連接對話

  12. 如果連接丟失,則可以使用對話ID和WebSocket重新連接。
  13. [2

    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('錯誤重新連接對話:',錯誤); 投擲錯誤; } };

6。將活動發送到機器人

將用戶消息或活動發送到機器人。

[2


7。從機器人接收活動

使用WebSocket實時收聽bot響應。

[2

8。結束對話
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;
    }
};
明確結束對話,停止通信。

注意:直線API不需要明確的API調用來“結束”對話。

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(“活動錯誤輪詢:”,錯誤); 投擲錯誤; } };

10。參考
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;
    }
};

Microsoft Direct Line API Documentation

反應本機文檔

結論

本文檔提供了完整的指南,將直接行API集成到使用Axios和Websocket的React本機應用程序中。請按照概述的步驟來驗證,管理對話並使用Copilot Agent Bot可靠地處理通信。
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;
    }
};
版本聲明 本文轉載於:https://dev.to/vivekyadav200988/technical-documentation-using-direct-line-api-in-a-react-native-application-with-axios-k1o?1如有侵犯,請聯繫[email protected]刪除
最新教學 更多>
  • Java數組中元素位置查找技巧
    Java數組中元素位置查找技巧
    在Java數組中檢索元素的位置 利用Java的反射API將數組轉換為列表中,允許您使用indexof方法。 (primitives)(鏈接到Mishax的解決方案) 用於排序陣列的數組此方法此方法返回元素的索引,如果發現了元素的索引,或一個負值,指示應放置元素的插入點。
    程式設計 發佈於2025-05-05
  • 如何在其容器中為DIV創建平滑的左右CSS動畫?
    如何在其容器中為DIV創建平滑的左右CSS動畫?
    通用CSS動畫,用於左右運動 ,我們將探索創建一個通用的CSS動畫,以向左和右移動DIV,從而到達其容器的邊緣。該動畫可以應用於具有絕對定位的任何div,無論其未知長度如何。 問題:使用左直接導致瞬時消失 更加流暢的解決方案:混合轉換和左 [並實現平穩的,線性的運動,我們介紹了線性的轉換。...
    程式設計 發佈於2025-05-05
  • 在Oracle SQL中如何提取下劃線前的子字符串?
    在Oracle SQL中如何提取下劃線前的子字符串?
    [ 在oracle sql 解決方案: Explanation:SUBSTR function extracts a substring starting from the specified position (0) and continuing for a specified length.IN...
    程式設計 發佈於2025-05-05
  • Python中何時用"try"而非"if"檢測變量值?
    Python中何時用"try"而非"if"檢測變量值?
    使用“ try“ vs.” if”來測試python 在python中的變量值,在某些情況下,您可能需要在處理之前檢查變量是否具有值。在使用“如果”或“ try”構建體之間決定。 “ if” constructs result = function() 如果結果: 對於結果: ...
    程式設計 發佈於2025-05-05
  • 為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    為什麼儘管有效代碼,為什麼在PHP中捕獲輸入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,輸出...
    程式設計 發佈於2025-05-05
  • 如何使用Depimal.parse()中的指數表示法中的數字?
    如何使用Depimal.parse()中的指數表示法中的數字?
    在嘗試使用Decimal.parse(“ 1.2345e-02”中的指數符號表示法表示的字符串時,您可能會遇到錯誤。這是因為默認解析方法無法識別指數符號。 成功解析這樣的字符串,您需要明確指定它代表浮點數。您可以使用numbersTyles.Float樣式進行此操作,如下所示:[&& && && ...
    程式設計 發佈於2025-05-05
  • 反射動態實現Go接口用於RPC方法探索
    反射動態實現Go接口用於RPC方法探索
    在GO 使用反射來實現定義RPC式方法的界面。例如,考慮一個接口,例如:鍵入myService接口{ 登錄(用戶名,密碼字符串)(sessionId int,錯誤錯誤) helloworld(sessionid int)(hi String,錯誤錯誤) } 替代方案而不是依靠反射...
    程式設計 發佈於2025-05-05
  • 為什麼我在Silverlight Linq查詢中獲得“無法找到查詢模式的實現”錯誤?
    為什麼我在Silverlight Linq查詢中獲得“無法找到查詢模式的實現”錯誤?
    查詢模式實現缺失:解決“無法找到”錯誤在Silverlight應用程序中,嘗試使用LINQ建立LINQ連接以錯誤而實現的數據庫”,無法找到查詢模式的實現。”當省略LINQ名稱空間或查詢類型缺少IEnumerable 實現時,通常會發生此錯誤。 解決問題來驗證該類型的質量是至關重要的。在此特定實例...
    程式設計 發佈於2025-05-05
  • 如何有效地轉換PHP中的時區?
    如何有效地轉換PHP中的時區?
    在PHP 利用dateTime對象和functions DateTime對象及其相應的功能別名為時區轉換提供方便的方法。例如: //定義用戶的時區 date_default_timezone_set('歐洲/倫敦'); //創建DateTime對象 $ dateTime = ne...
    程式設計 發佈於2025-05-05
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] 剩餘_size- = buf_size lines = buffer.split('\ n'....
    程式設計 發佈於2025-05-05
  • 為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    為什麼Microsoft Visual C ++無法正確實現兩台模板的實例?
    在Microsoft Visual C 中,Microsoft consions用戶strate strate strate strate strate strate strate strate strate strate strate strate strate strate strate st...
    程式設計 發佈於2025-05-05
  • C++成員函數指針正確傳遞方法
    C++成員函數指針正確傳遞方法
    如何將成員函數置於c 的函數時,接受成員函數指針的函數時,必須同時提供對象的指針,並提供指針和指針到函數。需要具有一定簽名的功能指針。要通過成員函數,您需要同時提供對象指針(此)和成員函數指針。這可以通過修改Menubutton :: SetButton()(如下所示:[&& && && &&華)...
    程式設計 發佈於2025-05-05
  • 如何檢查對像是否具有Python中的特定屬性?
    如何檢查對像是否具有Python中的特定屬性?
    方法來確定對象屬性存在尋求一種方法來驗證對像中特定屬性的存在。考慮以下示例,其中嘗試訪問不確定屬性會引起錯誤: >>> a = someClass() >>> A.property Trackback(最近的最新電話): 文件“ ”,第1行, AttributeError: SomeClass...
    程式設計 發佈於2025-05-05
  • eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    稱量()和ast.literal_eval()中的Python Security 在使用用戶輸入時,必須優先確保安全性。強大的Python功能Eval()通常是作為潛在解決方案而出現的,但擔心其潛在風險。本文深入研究了eval()和ast.literal_eval()之間的差異,突出顯示其安全性含義...
    程式設計 發佈於2025-05-05
  • Python讀取CSV文件UnicodeDecodeError終極解決方法
    Python讀取CSV文件UnicodeDecodeError終極解決方法
    在試圖使用已內置的CSV模塊讀取Python中時,CSV文件中的Unicode Decode Decode Decode Decode decode Error讀取,您可能會遇到錯誤的錯誤:無法解碼字節 在位置2-3中:截斷\ uxxxxxxxx逃脫當CSV文件包含特殊字符或Unicode的路徑逃...
    程式設計 發佈於2025-05-05

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3