Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Αυτό το άρθρο περιγράφει τον τρόπο λήψης συνημμένων αρχείων από ένα bot Azure που χρησιμοποιείται με ανταλλαγή μηνυμάτων στο Dynamics 365 Customer Service.
Για να κάνετε λήψη συνημμένων από ένα Azure bot, ολοκληρώστε τα παρακάτω βήματα:
Λάβετε το διακριτικό για το bot χρησιμοποιώντας το Αναγνωριστικό εφαρμογής Microsoft και τον μυστικό κωδικό προγράμματος-πελάτη του bot σας.
Λάβετε το
attachmentIdαπό τονamsReferencesπίνακα στα δεδομένα καναλιού της δραστηριότητας.Για παράδειγμα, εάν ο πίνακας
amsReferencesπεριέχει["0-eus-d1-5360689c55c308cb4e3b51722e46b801"], τότε τοattachmentIdείναι0-eus-d1-5360689c55c308cb4e3b51722e46b801.Εισαγάγετε το
attachmentIdσε μιαRequestUriμεταβλητή και, στη συνέχεια, χρησιμοποιήστεRequestUriτο σε μιαGETαίτηση, όπως αυτό:
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>);
httpRequest.Headers.Authorization = authorization;
httpRequest.Headers.Add("BotAcsId", activity.Recipient.Id);
HttpResponseMessage response = await client.SendAsync(httpRequest);
Διαχείριση συνημμένων αρχείων
Σημείωση
Οι πληροφορίες σε αυτήν την ενότητα ισχύουν μόνο για cloud κοινότητας δημόσιων οργανισμών (GCC).
Αυτή η ενότητα περιγράφει τον τρόπο διαχείρισης συνημμένων αρχείων στο κανάλι ανταλλαγής μηνυμάτων.
Πρώτα, εξετάστε τις μορφές συνημμένου αρχείου στο κανάλι ανταλλαγής μηνυμάτων.
Μορφές συνημμένου αρχείου
Όταν αποστέλλονται συνημμένα αρχείων από το Κέντρο επαφών του Dynamics 365 στον παράγοντα Azure στο κανάλι ανταλλαγής μηνυμάτων, οι πληροφορίες που απαιτούνται για τη λήψη των αρχείων μεταβιβάζονται στα amsReferences πεδία και amsMetadata της ιδιότητας Activity.ChannelData .
Κανάλι ανταλλαγής μηνυμάτων
{
"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"
}
}
Τρόπος διαχείρισης συνημμένων αρχείων στον κώδικα παράγοντα Azure σας
Οι πληροφορίες συνημμένων μεταβιβάζονται στο κανάλι υπηρεσίας του παράγοντα πανκαναλικού και είναι προσβάσιμες στον κώδικα του παράγοντα, όπως φαίνεται στο παρακάτω παράδειγμα.
// 1. Retrieve Attachment ID from ChannelData["amsReferences"]
if (activity.ChannelData != null &&
activity.ChannelData is Dictionary<string, JsonElement> channelData &&
channelData.TryGetValue("amsReferences", out var amsReferencesElement))
{
var amsReferencesString = amsReferencesElement.GetString() ?? amsReferencesElement.ToString();
string attachmentId = JsonConvert.DeserializeObject<string[]>(amsReferencesString).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
// Option A: Using IConnections (recommended)
var connection = connections.GetConnection("ServiceConnection");
var token = await connection.GetAccessTokenAsync(
"https://api.botframework.com",
new[] { "https://api.botframework.com/.default" },
forceRefresh: false);
// Option B: Using OAuth client credentials flow
// var tokenRequest = new HttpRequestMessage(HttpMethod.Post, $"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token")
// {
// Content = new FormUrlEncodedContent(new Dictionary<string, string>
// {
// { "grant_type", "client_credentials" },
// { "client_id", botAppId },
// { "client_secret", botAppSecret },
// { "scope", "https://api.botframework.com/.default" }
// })
// };
// var tokenResponse = await client.SendAsync(tokenRequest);
// var tokenContent = await tokenResponse.Content.ReadAsStringAsync();
// var token = JsonConvert.DeserializeObject<dynamic>(tokenContent).access_token;
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", 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))
{
await responseContentStream.CopyToAsync(fileCreateStream);
}
}
Σχετικές πληροφορίες
Υποστήριξη κάρτας κατά κανάλι
Υποστήριξη για ζωντανή συνομιλία και ασύγχρονα κανάλια