Télécharger les pièces jointes à partir d’un bot Azure
Suivez ces étapes pour télécharger les pièces jointes un bot Azure Omnicanal.
Obtenez le jeton pour votre bot en fournissant l’ID d’application Microsoft et la clé secrète client de votre bot.
Récupérez l’
attachmentId
à partir de l’URL du contenu de la pièce jointe.Par exemple, si l’URL est
https://us-api.asm.skype.com/v1/objects/0-eus-d1-5360689c55c308cb4e3b51722e46b801/
, alors leattachmentId
est0-eus-d1-5360689c55c308cb4e3b51722e46b801
.Insérez le
attachmentId
dans une variableRequestUri
, puis utilisezRequestUri
dans une requêteGET
, comme ceci :string requestUri = $"https://botapi.skype.com/amer/v3/attachments/{attachmentId}/views/original"; var httpRequest = new HttpRequestMessage(HttpMethod.Get, requestUri); var authorization = new AuthenticationHeaderValue("bearer", <add the botToken here>); var requestHeaders = new Dictionary<string, string>() { { "Authorization", authorization.ToString() } }; foreach (var header in requestHeaders) { httpRequest.Headers.Add(header.Key, header.Value); } HttpResponseMessage response = await client.SendAsync(httpRequest);
Gérer les pièces jointes
Note
Les informations contenues dans cette section s’appliquent uniquement à Government Community Cloud (GCC).
Cette section décrit comment gérer les pièces jointes dans la plateforme de messagerie omnicanal Bot Service.
Tout d’abord, passons rapidement en revue les formats de pièces jointes dans le canal omnicanal Bot Service.
Formats de fichiers joints
Lorsque des pièces jointes sont envoyées depuis Omnicanal pour Customer Service au bot Azure sur le canal Bot Service Omnicanal, les informations requises pour télécharger les fichiers sont transmises dans les champs amsReferences
et amsMetadata
de la propriété Activity.ChannelData
.
Canal de service de bot Omnicanal
{
"recipient":{
"id":"8:acs:5ecf37b1-11 Oc-414g-ab33-804ffd6b4a33_eooe0010-7c57-1ceb-nec-113aOdOOb272",
"name":"Omnichannel-test-bot",
"aadObjectId":null,
"role":null
},
"attachments ":null,
"channelData":{
"tags":"Channelld-lcw,FromCustomer",
"deliveryMode":"bridged",
"fromUserId":"8:acs:5ecf37b1-110c-4149-ab33-804ffd6b4a33_00000010-61 b9-ab1 d-3dfe-9c3aOd009ea4",
"amsReferences":[
"0-wus-d6-20e7797d208fab388cc11b09674d166"
],
"amsMetadata":[
{
"contentType":"image/png",
"fileName":"SurnmerTime.png"
}
],
"sourceChannelId":"omnichannel"
}
}
Comment gérer les pièces jointes dans votre code de bot Azure
Les informations sur les pièces jointes sont transmises dans le canal omnicanal Bot Service et sont accessibles dans le code agent, comme indiqué dans l’exemple suivant.
// 1. Retrieve Attachment ID from ChannelData["amsReferences"]
if (turnContext.Activity.ChannelData != null &&
turnContext.Activity.ChannelData is JObject incomingRequestChannelData &&
incomingRequestChannelData.TryGetValue("amsReferences", out JToken amsReferencesArray))
{
string attachmentId = JsonConvert.DeserializeObject<string[]>(amsReferencesArray.ToString()).FirstOrDefault();
// 2. Build HTTP request for specified attachment ID.
string requestUri = $"https://botapi.skype.com/amer/v3/attachments/{attachmentId}/views/original";
var httpRequest = new HttpRequestMessage(HttpMethod.Get, requestUri);
// 3. Acquire authentication token and add it to request headers
var token = await new MicrosoftAppCredentials("botAppId", "botAppSecret").GetTokenAsync();
var authorization = new AuthenticationHeaderValue("bearer", token);
httpRequest.Headers.Add("Authorization", authorization.ToString());
// 4. Add Azure Communication Services Bot ID to request header. This is required to achieve good download performance.
httpRequest.Headers.Add("BotAcsId", turnContext.Activity.Recipient.Id);
// 5. Use HttpClient to execute the request and download attachment
var response = await client.SendAsync(httpRequest);
// 6. Save HTTP response stream to the file
var responseContentStream = await response.Content.ReadAsStreamAsync();
using (FileStream fileCreateStream = new FileStream("file path", FileMode.Create))
{
fileCreateStream.CopyTo(responseContentStream);
}
}
Voir aussi
Prise en charge de la carte par canal
Prise en charge de la conversation instantanée en direct et des canaux asynchrones
Changements relatifs à la migration pour la nouvelle plateforme de messagerie Omnicanal