]
В этом документе подробно описывается использование API Microsoft Direct Line в нативном приложении React, используя JavaScript, Axios и WebSocket для связи с агентом Copilot Bot.
], прежде чем продолжить, убедитесь, что следующее:
]1. Секрет прямой линии: получить секрет прямой линии от Coilot Chat Bot.
]2. React Native Development Environment: установите рабочий нативный проект React.
]3. Установлена библиотека Axios: добавить Axios в зависимости вашего проекта, используя NPM Установленные Axios или пряжу добавить Axios.
]4. Поддержка WebSocket: Убедитесь, что API WebSocket совместим с вашей средой приложения.
5. Базовые знания: знакомство с JavaScript, реагируйте нативные и Restful API.
Authentication
Generating Token
освежает токен
Запуск разговора
Reconneducting Country
]
Окончание разговора
Мониторинг статуса подключения и повторное соединение
ссылки
]
] 1. Аутентификация]
токены генерируются с использованием секрета, чтобы инициировать безопасную связь.]
]
импорт Axios из 'Axios';
const generatetoken = async (secret) => {
const url = 'https://directline.botframework.com/v3/directline/tokens/generate';
пытаться {
const response = await axios.post (url, {}, {
Заголовки: {
Авторизация: `носитель $ {секрет}`,
},
});
return response.data.token;
} catch (error) {
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 refreshtoken = async (token) => {
const url = 'https://directline.botframework.com/v3/directline/tokens/refresh';
пытаться {
const response = await axios.post (url, {}, {
Заголовки: {
Авторизация: `носитель $ {token}`,
},
});
return response.data.token;
} catch (error) {
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';
пытаться {
const response = await axios.post (url, {}, {
Заголовки: {
Авторизация: `носитель $ {token}`,
},
});
return response.data;
} catch (error) {
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; } };Если соединение потеряно, вы можете воссоединиться, используя SurnegID и WebSocket.
]
]
const ReconnectConversation = async (singleId, token) => {
const url = `https://directline.botframework.com/v3/directline/conversations/$ {waterid}? watermark = 0`;
пытаться {
const response = wait axios.get (url, {
Заголовки: {
Авторизация: `носитель $ {token}`,
},
});
return response.data;
} catch (error) {
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; } };Отправить пользовательские сообщения или действия Bot.
]
]
const SendActivity = async (singleId, token, activity) => {
const url = `https://directline.botframework.com/v3/directline/conversations/$ {seargitid}/actions`;
пытаться {
const response = wata axios.post (url, activity, {
Заголовки: {
Авторизация: `носитель $ {token}`,
},
});
return response.data;
} catch (error) {
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; } };используйте WebSocket, чтобы прослушать ответы бота в режиме реального времени.
]
]
const connectWebSocket = (Streamurl, onMessage) => {
const socket = new WebSocket (Streamurl);
socket.onopen = () => {
console.log ('websocket connection установлено.');
};
socket.onmessage = (event) => {
const data = json.parse (event.data);
console.log ('Сообщение получено:', data);
onmessage (data.activities);
};
socket.onerror = (erry) => {
console.error ('websocket error:', error);
};
socket.onclose = (event) => {
console.warn ('websocket connection закрыто:', событие);
};
вернуть гнездо;
};
]
]
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 и отступление к опросу, если отключено.]
]
const monitornection = (ocket, sharkbacktopolling) => {
socket.onclose = () => {
console.warn ('websocket connection закрыто. Возвращение к опросам.');
SwarkbackTopolling ();
};
};
Const pollforActivities = async (singleId, token) => {
const url = `https://directline.botframework.com/v3/directline/conversations/$ {seargitid}/actions`;
пытаться {
const response = wait axios.get (url, {
Заголовки: {
Авторизация: `носитель $ {token}`,
},
});
return response.data.activities;
} catch (error) {
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; } };]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3