다음을 통해 공유


Azure 봇에서 첨부 파일 다운로드

Omnichannel의 Azure 봇에서 첨부 파일을 다운로드하려면 다음 단계를 수행합니다.

  1. 봇의 Microsoft 앱 ID 및 클라이언트 암호를 사용하여 봇에 대한 토큰을 가져옵니다.

  2. attachmentId 첨부 파일 URL에서 가져옵니다.

    예를 들어 URL이 https://us-api.asm.skype.com/v1/objects/0-eus-d1-5360689c55c308cb4e3b51722e46b801/attachmentId 다음과 같습니다 0-eus-d1-5360689c55c308cb4e3b51722e46b801.

  3. attachmentIdRequestUri 변수에 삽입한 다음, RequestUriGET 요청에서 다음과 같이 사용합니다.

    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);
    

파일 첨부 관리

비고

이 섹션의 정보는 GCC(Government Community Cloud)에만 적용됩니다.

이 섹션에서는 Omnichannel 봇 서비스 메시징 플랫폼에서 파일 첨부 파일을 관리하는 방법을 설명합니다.

먼저 Omnichannel 봇 서비스 채널에서 파일 첨부 파일 형식을 빠르게 검토해 보겠습니다.

파일 첨부 파일 형식

Dynamics 365 Contact Center에서 Omnichannel 봇 서비스 채널의 Azure 봇으로 파일 첨부 파일을 보내면 파일을 다운로드하는 데 필요한 정보가 속성의 amsReferences 필드와 amsMetadata 필드에 전달됩니다Activity.ChannelData.

Omnichannel 봇 서비스 채널

{
   "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 봇 코드에서 파일 첨부 파일을 관리하는 방법

첨부 파일 정보는 Omnichannel 봇 서비스 채널에 전달되며 다음 예제와 같이 봇 코드에서 액세스할 수 있습니다.

// 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);
    }
}

채널별 카드 지원
라이브 채팅과 비동기 채널 지원