

**지원 종료 공지**: 2026년 2월 20일에 AWS 는 Amazon Chime 서비스에 대한 지원을 종료합니다. 2026년 2월 20일 이후에는 Amazon Chime 콘솔 또는 Amazon Chime 애플리케이션 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 이 [블로그 게시물](https://aws.amazon.com/blogs/messaging-and-targeting/update-on-support-for-amazon-chime/)을 참조하세요. **참고:** 이는 [Amazon Chime SDK 서비스의](https://aws.amazon.com/chime/chime-sdk/) 가용성에 영향을 주지 않습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Chime 데스크톱 클라이언트 확장
<a name="extend-chime-client"></a>

챗봇, 프록시 전화 세션, 웹후크를 추가하여 Amazon Chime 데스크톱 클라이언트의 기능을 확장할 수 있습니다. 챗봇을 통해 사용자는 내부 시스템에 정보를 쿼리하는 등의 작업을 수행할 수 있습니다. 프록시 전화 세션을 통해 사용자는 전화번호를 표시하지 않고도 전화를 걸고 문자를 전송할 수 있습니다. 웹후크는 채팅룸에 메시지를 자동으로 전송할 수 있습니다. 예를 들어 웹후크는 회의 링크와 함께 회의 알림을 팀에 전송할 수 있습니다.

**Topics**
+ [사용자 관리](users.md)
+ [Amazon Chime 데스크톱 클라이언트에 챗봇 통합](chat-bots.md)
+ [Amazon Chime에 사용할 웹후크 생성](webhooks.md)

# 사용자 관리
<a name="users"></a>

다음과 같은 코드 스니펫은 Amazon Chime 사용자를 관리하는 데 도움이 될 수 있습니다. 이 주제의 모든 예제에서는 Java를 사용합니다.

**Topics**
+ [여러 사용자 초대](invite-users.md)
+ [사용자 목록 다운로드](download-users.md)
+ [여러 사용자 로그아웃](logout-users.md)
+ [사용자 개인 PIN 업데이트](update-pins.md)

# 여러 사용자 초대
<a name="invite-users"></a>

아래의 예제에서는 Amazon Chime `Team` 계정에 여러 사용자를 초대하는 방법을 보여줍니다.

```
List<String> emails = new ArrayList<>();
emails.add("janedoe@example.com");
emails.add("richardroe@example.net");
InviteUsersRequest inviteUsersRequest = new InviteUsersRequest()
    .withAccountId("chimeAccountId")
    .withUserEmailList(emails);

chime.inviteUsers(inviteUsersRequest);
```

# 사용자 목록 다운로드
<a name="download-users"></a>

아래의 예제에서는 Amazon Chime 관리 계정과 연결된 사용자 목록을 `.csv` 형식으로 다운로드하는 방법을 보여줍니다.

```
BufferedWriter writer = Files.newBufferedWriter(Paths.get("/path/to/csv"));
CSVPrinter printer = new CSVPrinter(writer, CSVFormat.DEFAULT.withHeader("userId", "email"));

ListUsersRequest listUsersRequest = new ListUsersRequest()
    .withAccountId(accountId)
    .withMaxResults(1);

boolean done = false;
while (!done) {
    ListUsersResult listUsersResult = chime.listUsers(listUsersRequest);
    for (User user: listUsersResult.getUsers()) {
        printer.printRecord(user.getUserId(), user.getPrimaryEmail());
    }

    if (listUsersResult.getNextToken() == null) {
        done = true;
    }

    listUsersRequest = new ListUsersRequest()
        .withAccountId(accountId)
        .withNextToken(listUsersResult.getNextToken());
}

printer.close();
```

# 여러 사용자 로그아웃
<a name="logout-users"></a>

아래의 예제에서는 Amazon Chime 관리 계정에서 여러 사용자를 로그아웃하는 방법을 보여줍니다.

```
ListUsersRequest listUsersRequest = new ListUsersRequest()
    .withAccountId("chimeAccountId");
ListUsersResult listUsersResult = chime.listUsers(listUsersRequest);

for (User user: listUsersResult.getUsers()) {
    LogoutUserRequest logoutUserRequest = new LogoutUserRequest()
        .withAccountId(user.getAccountId())
        .withUserId(user.getUserId());

    chime.logoutUser(logoutUserRequest);
}
```

# 사용자 개인 PIN 업데이트
<a name="update-pins"></a>

아래의 예제에서는 지정된 Amazon Chime 사용자의 개인 회의 PIN을 재설정하는 방법을 보여줍니다.

```
ResetPersonalPINRequest request = new ResetPersonalPINRequest()
    .withAccountId("chimeAccountId")
    .withUserId("userId");

ResetPersonalPINResult result = chime.resetPersonalPIN(request);

User user = result.getUser();
user.getPersonalPIN()
```

# Amazon Chime 데스크톱 클라이언트에 챗봇 통합
<a name="chat-bots"></a>

 AWS Command Line Interface (AWS CLI), Amazon Chime API 또는 AWS SDK를 사용하여 챗봇을 Amazon Chime과 통합할 수 있습니다. 챗봇을 사용하면 Amazon Lex AWS Lambda및 기타 AWS 서비스의 기능을 사용하여 Amazon Chime 채팅룸의 사용자가 액세스할 수 있는 지능형 대화형 인터페이스를 통해 일반적인 작업을 간소화할 수 있습니다.

Amazon Chime 엔터프라이즈 계정 관리자인 경우, 챗봇을 사용하여 사용자가 다음과 같은 태스크를 수행하도록 허용할 수 있습니다.
+ 정보를 위해 내부 시스템에 쿼리 작성
+ 자동화 작업
+ 심각한 문제에 대한 알림 수신
+ 지원 티켓 생성

Amazon Chime 엔터프라이즈 계정 유형에 대한 자세한 내용은 [Amazon Chime 계정 관리](manage-chime-account.md) 섹션을 참조하세요.

Amazon Chime Enterprise 계정을 관리하는 경우 최대 10개의 채팅 봇을 생성하여 Amazon Chime과 통합할 수 있습니다. 챗봇은 사용자 계정의 멤버가 생성한 채팅룸에서만 사용할 수 있습니다. 채팅룸 관리자만 채팅룸에 챗봇을 추가할 수 있습니다. 채팅룸에 챗봇을 추가하면 채팅룸의 멤버는 봇 생성자가 제공한 명령을 사용하여 봇과 상호 작용할 수 있습니다. 자세한 내용은 이 주제의 다음 섹션을 참조하세요.

Linux 및 macOS 사용자는 샘플 사용자 지정 챗봇을 만들 수 있습니다. 자세한 내용은 [Amazon Chime 사용자 지정 챗봇 만들기](https://aws.amazon.com/blogs/business-productivity/build-custom-chat-bots-for-amazon-chime/)를 참조하세요.

**Topics**
+ [Amazon Chime에서 챗봇 사용](use-bots.md)
+ [챗봇으로 전송된 Amazon Chime 이벤트](events-bots.md)

# Amazon Chime에서 챗봇 사용
<a name="use-bots"></a>

Amazon Chime Enterprise 계정을 관리하는 경우 최대 10개의 채팅 봇을 생성하여 Amazon Chime과 통합할 수 있습니다. 챗봇은 사용자 계정의 멤버가 생성한 채팅룸에서만 사용할 수 있습니다. 채팅룸 관리자만 채팅룸에 챗봇을 추가할 수 있습니다. 채팅룸에 챗봇을 추가하면 채팅룸의 멤버는 봇 생성자가 제공한 명령을 사용하여 봇과 상호 작용할 수 있습니다. 자세한 내용을 알아보려면 *Amazon Chime 사용 설명서*의 [챗봇 사용하기](https://docs.aws.amazon.com/chime/latest/ug/chat-bots.html)를 참조하세요.

Amazon Chime API를 사용하여 Amazon Chime 계정에 대한 챗봇을 활성화하거나 중지할 수도 있습니다. 자세한 내용은 [챗봇 업데이트](update-bots.md) 섹션을 참조하세요.

**참고**  
챗봇은 삭제할 수 없습니다. 계정에서 챗봇 사용을 중지하려면 *Amazon Chime API 참조*에서 Amazon Chime [UpdateBot](https://docs.aws.amazon.com/chime/latest/APIReference/API_UpdateBot.html) API 작업을 사용하세요. 챗봇을 중지하면 채팅룸 관리자가 채팅룸에서 챗봇을 제거할 수 있지만, 채팅룸에 추가할 수는 없습니다. 채팅룸에서 중단된 챗봇을 @언급한 사용자에게는 오류 메시지가 표시됩니다.

## 사전 조건
<a name="bots-prereqs"></a>

챗봇을 Amazon Chime과 통합하는 절차를 시작하려면 우선 다음과 같은 사전 조건을 완료하세요.
+ 챗봇을 생성합니다.
+ Amazon Chime에 대한 아웃바운드 엔드포인트를 생성하여 이벤트를 봇에 전송합니다. AWS Lambda 함수 ARN 또는 HTTPS 엔드포인트 중에서 선택합니다. Lambda에 대한 자세한 내용은 *[AWS Lambda 개발자 설명서](https://docs.aws.amazon.com/lambda/latest/dg/)*를 참조하세요.

## HTTPS 엔드포인트 대한 DNS 모범 사례
<a name="dns-practices"></a>

HTTPS 엔드포인트에 대해 DNS를 할당할 때 다음 모범 사례를 따르는 것이 좋습니다.
+ 봇 엔드포인트 전용 DNS 하위 도메인을 사용합니다.
+ A 레코드를 사용하여 봇 엔드포인트를 가리킵니다.
+ 도메인 탈취를 방지하기 위해 DNS 서버 및 DNS 등록 대행자 계정을 보호합니다.
+ 공개적으로 유효한 봇 엔드포인트 전용 TLS 중간 인증서를 사용합니다.
+ 봇 메시지에 대해 작업하기 전에 봇 메시지 서명을 암호화 방식으로 검증합니다.

챗봇을 생성한 후 AWS Command Line Interface (AWS CLI) 또는 Amazon Chime API 작업을 사용하여 다음 섹션에 설명된 작업을 완료합니다.

**Topics**
+ [1단계: 챗봇을 Amazon Chime과 통합](integrate-bots.md)
+ [2단계: Amazon Chime 챗봇에 대한 아웃바운드 엔드포인트 구성](config-endpoints.md)
+ [3단계: Amazon Chime 채팅룸에 챗봇 추가](add-bots.md)
+ [챗봇 요청 인증](auth-bots.md)
+ [챗봇 업데이트](update-bots.md)

# 1단계: 챗봇을 Amazon Chime과 통합
<a name="integrate-bots"></a>

[사전 조건을](use-bots.md#bots-prereqs) 완료한 후 AWS CLI 또는 Amazon Chime API를 사용하여 챗봇을 Amazon Chime과 통합합니다.

**참고**  
이 절차를 수행하면 챗봇의 이름과 이메일 주소가 생성됩니다. 생성 후에는 챗봇 이름과 이메일 주소를 변경할 수 없습니다.

## AWS CLI
<a name="integ-cli"></a>

**를 사용하여 챗봇을 통합하려면 AWS CLI**

1. 챗봇을 Amazon Chime과 통합하려면 AWS CLI의 **create-bot** 명령을 사용하세요.

   ```
   aws chime create-bot --account-id 12a3456b-7c89-012d-3456-78901e23fg45 --display-name exampleBot --domain example.com
   ```

   1. 최대 55자의 영숫자 또는 특수 문자(예: \$1, -, %)로 구성된 챗봇 표시 이름을 입력합니다.

   1. Amazon Chime 엔터프라이즈 계정에 대해 등록된 도메인 이름을 입력합니다.

1. Amazon Chime에서 봇 ID가 포함된 응답을 반환합니다.

   ```
   "Bot": {
           "CreatedTimestamp": "timeStamp",
           "DisplayName": "exampleBot",
           "Disabled": exampleBotFlag,
           "UserId": "1ab2345c-67de-8901-f23g-45h678901j2k",
           "BotId": "botId",
           "UpdatedTimestamp": "timeStamp",
           "BotType": "ChatBot",
           "SecurityToken": "securityToken",
           "BotEmail": "displayName-chimebot@example.com"
            }
   ```

1. 다음 절차에 사용할 봇 ID와 봇 이메일 주소를 복사한 후 저장합니다.

## Amazon Chime API
<a name="integ-api"></a>

**Amazon Chime API를 사용하여 챗봇을 통합하려면**

1. 챗봇을 Amazon Chime과 통합하려면 *Amazon Chime API 참조*의 [CreateBot](https://docs.aws.amazon.com/chime/latest/APIReference/API_CreateBot.html) API 작업을 사용하세요.

   1. 최대 55자의 영숫자 또는 특수 문자(예: \$1, -, %)로 구성된 챗봇 표시 이름을 입력합니다.

   1. Amazon Chime 엔터프라이즈 계정에 대해 등록된 도메인 이름을 입력합니다.

1. Amazon Chime에서 봇 ID가 포함된 응답을 반환합니다. 봇 ID와 이메일 주소를 복사한 후 저장합니다. 봇 이메일 주소는 `exampleBot-chimebot@example.com` 같은 형식입니다.

## AWS Java용 SDK
<a name="integ-sdk"></a>

다음 샘플 코드는 AWS SDK for Java를 사용하여 챗봇을 통합하는 방법을 보여줍니다.

```
CreateBotRequest createBotRequest = new CreateBotRequest()
    .withAccountId("chimeAccountId")
    .withDisplayName("exampleBot")
    .withDomain("example.com");

chime.createBot(createBotRequest);
```

Amazon Chime에서 봇 ID가 포함된 응답을 반환합니다. 봇 ID와 이메일 주소를 복사한 후 저장합니다. 봇 이메일 주소는 `exampleBot-chimebot@example.com` 같은 형식입니다.

# 2단계: Amazon Chime 챗봇에 대한 아웃바운드 엔드포인트 구성
<a name="config-endpoints"></a>

Amazon Chime 엔터프라이즈 계정에 대한 챗봇 ID를 생성한 후에는 Amazon Chime이 봇에 메시지를 전송하는 데 사용할 아웃바운드 엔드포인트를 구성합니다. 아웃바운드 엔드포인트는 사전 요구 사항의 일부로 생성한 AWS Lambda 함수 ARN 또는 HTTPS 엔드포인트일 수 있습니다. [사전 조건](use-bots.md#bots-prereqs) Lambda에 대한 자세한 내용은 *[AWS Lambda 개발자 안내서](https://docs.aws.amazon.com/lambda/latest/dg/)*를 참조하세요.

**참고**  
봇에 대한 아웃바운드 HTTPS 엔드포인트가 구성되지 않았거나 비어 있는 경우 채팅룸 관리자는 채팅룸에 봇을 추가할 수 없습니다. 또한 채팅룸 사용자는 봇과 상호 작용할 수 없습니다.

## AWS CLI
<a name="endpoint-cli"></a>

챗봇에 대한 아웃바운드 엔드포인트를 구성하려면 AWS CLI의 **put-events-configuration** 명령을 사용하세요. Lambda 함수 ARN 또는 아웃바운드 HTTPS 엔드포인트를 구성합니다.

------
#### [ Lambda ARN ]

```
aws chime put-events-configuration --account-id 12a3456b-7c89-012d-3456-78901e23fg45 --bot-id botId --lambda-function-arn arn:aws:lambda:us-east-1:111122223333:function:function-name
```

------
#### [ HTTPS endpoint ]

```
aws chime put-events-configuration --account-id 12a3456b-7c89-012d-3456-78901e23fg45 --bot-id botId --outbound-events-https-endpoint https://example.com:8000
```

------

Amazon Chime은 봇 ID 및 HTTPS 엔드포인트로 응답합니다.

```
{
    "EventsConfiguration": {
        "BotId": "BotId", 
        "OutboundEventsHTTPSEndpoint": "https://example.com:8000"
    }
}
```

## Amazon Chime API
<a name="endpoint-api"></a>

챗봇에 대한 아웃바운드 엔드포인트를 구성하려면 *Amazon Chime API 참조*에서 Amazon Chime [PutEventsConfiguration](https://docs.aws.amazon.com/chime/latest/APIReference/API_PutEventsConfiguration.html) API 작업을 사용하세요. Lambda 함수 ARN 또는 아웃바운드 HTTPS 엔드포인트를 구성합니다.
+ **Lambda 함수 ARN을 구성하는 경우** - Amazon Chime은 Lambda를 호출하여 Amazon Chime 관리자의 AWS 계정이 제공된 Lambda 함수 ARN을 호출하도록 허용하는 권한을 추가합니다. 이후 Amazon Chime에서 함수를 간접 호출할 권한이 있는지 확인하는 모의 실습 호출이 수행됩니다. 권한 추가에 실패하거나 모의 실습 호출이 실패하면 `PutEventsConfiguration` 요청에서는 HTTP 4xx 오류가 반환됩니다.
+ **아웃바운드 HTTPS 엔드포인트를 구성할 경우** - Amazon Chime에서는 Challenge JSON 페이로드가 있는 HTTP Post 요청을 이전 단계에서 제공한 아웃바운드 HTTPS 엔드포인트로 전송하여 엔드포인트를 확인합니다. 아웃바운드 HTTPS 엔드포인트에서는 Challenge 파라미터를 JSON 형식으로 되풀이하여 응답해야 합니다. 다음은 요청 및 유효한 응답을 보여주는 예입니다.

------
#### [ Request ]

  ```
                 HTTPS POST 
  
                 JSON Payload:
                 {
                    "Challenge":"00000000000000000000",
                    "EventType" : "HTTPSEndpointVerification"
                 }
  ```

------
#### [ Response ]

  ```
                 HTTP/1.1 200 OK
                 Content-type: application/json
  
                 {
                     "Challenge":"00000000000000000000"
                 }
  ```

------

  Challenge 핸드셰이크가 실패하면 `PutEventsConfiguration` 요청에서는 HTTP 4xx 오류가 반환됩니다.

## AWS Java용 SDK
<a name="endpoint-sdk"></a>

다음 샘플 코드는 AWS SDK for Java를 사용하여 엔드포인트를 구성하는 방법을 보여줍니다.

```
PutEventsConfigurationRequest putEventsConfigurationRequest = new PutEventsConfigurationRequest()
     .withAccountId("chimeAccountId")
     .withBotId("botId")
     .withOutboundEventsHTTPSEndpoint("https://www.example.com")
     .withLambdaFunctionArn("arn:aws:lambda:region:account-id:function:function-name");

 chime.putEventsConfiguration(putEventsConfigurationRequest):
```

# 3단계: Amazon Chime 채팅룸에 챗봇 추가
<a name="add-bots"></a>

채팅룸 관리자만 채팅룸에 챗봇을 추가할 수 있습니다. 채팅룸 관리자는 [1단계](integrate-bots.md)에서 생성된 챗봇 이메일 주소를 사용합니다.

**채팅룸에 챗봇을 추가하려면**

1. Amazon Chime 데스크톱 클라이언트 또는 웹 애플리케이션을 엽니다.

1. 오른쪽 상단 모서리에 있는 기어 모양 아이콘을 선택하고 **웹후크 및 봇 관리**를 선택합니다.

1. **봇 추가**을 선택합니다.

1. **이메일 주소**에 봇 이메일 주소를 입력합니다.

1. **추가**를 선택합니다.

봇 이름이 채팅 룸 명단에 표시됩니다. 채팅룸에 챗봇을 추가하는 데 필요한 추가 작업이 있을 경우 해당 작업을 채팅룸 관리자에게 제공하세요.

채팅룸에 챗봇을 추가한 후 채팅룸 사용자에게 챗봇 명령을 제공합니다. 이를 위한 한 가지 방법은 채팅룸 초대를 받았을 때 명령 도움말을 채팅룸에 전송하도록 챗봇을 프로그래밍하는 것입니다. 또한 챗봇 사용자가 사용할 도움말 명령을 생성하는 것이 좋습니다.

# 챗봇 요청 인증
<a name="auth-bots"></a>

Amazon Chime 채팅룸에서 챗봇에 전송된 요청을 인증할 수 있습니다. 이렇게 하려면 요청에 따라 서명을 계산합니다. 그런 다음, 계산된 서명이 요청 헤더의 서명과 일치하는지 확인합니다. Amazon Chime은 HMAC SHA256 해시를 사용하여 서명을 생성합니다.

아웃바운드 HTTPS 엔드포인트를 사용하여 Amazon Chime에 대해 챗봇을 구성한 경우 아래의 인증 단계를 따르세요.

**아웃바운드 HTTPS 엔드포인트가 구성된 챗봇에 대해 Amazon Chime의 서명된 요청을 검증하려면**

1. HTTP 요청에서 **Chime-Signature** 헤더를 가져옵니다.

1. **Chime-Request-Timestamp** 헤더와 요청 **본문**을 가져옵니다. 그런 다음 세로 막대를 두 요소 간의 구분 기호로 사용하여 문자열을 작성합니다.

1. CreateBot 응답의 **SecurityToken**을 **HMAC\$1SHA\$1256**의 초기 키로 사용하고 2단계에서 생성한 문자열을 해싱합니다.

1. Base64 인코더로 해싱한 바이트를 서명 문자열에 인코딩합니다.

1. 계산된 이 서명을 **Chime-Signature** 헤더에 있는 서명과 비교합니다.

다음은 Java를 사용하여 서명을 생성하는 방법을 설명하는 코드 샘플입니다.

```
        private final String DELIMITER = "|";
        private final String HMAC_SHA_256 = "HmacSHA256";
   
        private String generateSignature(String securityToken, String requestTime, String requestBody) 
        {
            try {
                final Mac mac = Mac.getInstance(HMAC_SHA_256);
                SecretKeySpec key = new SecretKeySpec(securityToken.getBytes(UTF_8), HMAC_SHA_256);
                mac.init(key);
                String data = requestTime + DELIMITER + requestBody;
                byte[] rawHmac = mac.doFinal(data.getBytes(UTF_8));

                return Base64.getEncoder().encodeToString(rawHmac);
                } 
            catch (Exception e) {
                throw e;
                }
         }
```

아웃바운드 HTTPS 엔드포인트는 2초 이내에 Amazon Chime의 `200 OK` 요청에 응답해야 합니다. 그렇지 않으면 요청이 실패합니다. 연결 또는 읽기 제한 시간으로 인해 2초 후 아웃바운드 HTTPS 엔드포인트를 사용할 수 없거나, Amazon Chime이 5xx 응답 코드를 수신하는 경우 Amazon Chime에서는 요청을 두 번 재시도합니다. 첫 번째 재시도는 초기 요청이 실패한 후 200밀리초에 전송되며, 두 번째 재시도는 이전 재시도가 실패한 후 400밀리초에 전송됩니다. 두 번째 재시도 이후에도 아웃바운드 HTTPS 엔드포인트를 계속 사용할 수 없으면 요청이 실패한 것입니다.

**참고**  
**Chime-Request-Timestamp**는 요청이 재시도될 때마다 변경됩니다.

Lambda 함수 ARN을 사용하여 Amazon Chime에 대해 챗봇을 구성한 경우 아래의 인증 단계를 따르세요.

**Lambda 함수 ARN이 구성된 챗봇에 대해 Amazon Chime의 서명된 요청을 확인하려면**

1. Lambda 요청 **ClientContext**에서 **Chime-Signature** 및 **Chime-Request-Timestamp**를 Base64 인코딩 JSON 형식으로 가져옵니다.

   ```
   {
   "Chime-Signature" : "1234567890",
   "Chime-Request-Timestamp" : "2019-04-04T21:30:43.181Z"
   }
   ```

1. 요청 페이로드에서 요청의 **본문**을 가져옵니다.

1. `CreateBot` 응답의 **SecurityToken**을 **HMAC\$1SHA\$1256**의 초기 키로 사용하고, 생성한 문자열을 해싱합니다.

1. Base64 인코더로 해싱한 바이트를 서명 문자열에 인코딩합니다.

1. 계산된 이 서명을 **Chime-Signature** 헤더에 있는 서명과 비교합니다.

Lambda 간접 호출 중 `com.amazonaws.SdkClientException`이 발생하면 Amazon Chime에서는 요청을 두 번 재시도합니다.

# 챗봇 업데이트
<a name="update-bots"></a>

Amazon Chime 계정 관리자는 Amazon Chime API를 AWS SDK 또는 AWS CLI 와 함께 사용하여 챗봇 세부 정보를 볼 수 있습니다. 계정에서 챗봇 사용을 활성화하거나 중지할 수도 있습니다. 챗봇에 대한 보안 토큰도 생성할 수 있습니다.

자세한 내용은 *Amazon Chime API 참조*의 다음 주제를 참조하세요.
+ [GetBot](https://docs.aws.amazon.com/chime/latest/APIReference/API_GetBot.html) – 봇 이메일 주소, 봇 유형 등 챗봇 세부 정보를 가져옵니다.
+ [UpdateBot](https://docs.aws.amazon.com/chime/latest/APIReference/API_UpdateBot.html) – 사용자의 계정에서 챗봇 사용을 활성화하거나 중지합니다.
+ [RegenerateSecurityToken](https://docs.aws.amazon.com/chime/latest/APIReference/API_RegenerateSecurityToken.html) – 챗봇에 대한 보안 토큰을 재생성합니다.

챗봇에 대해 `PutEventsConfiguration`을 변경하도록 선택할 수도 있습니다. 예를 들어, 초기에 챗봇이 아웃바운드 HTTPS 엔드포인트를 사용하도록 구성된 경우 이전 이벤트 구성을 삭제하고 Lambda 함수 ARN에 대한 새 이벤트 구성을 배치할 수 있습니다.

자세한 내용은 *Amazon Chime API 참조*의 다음 주제를 참조하세요.
+ [DeleteEventsConfiguration](https://docs.aws.amazon.com/chime/latest/APIReference/API_DeleteEventsConfiguration.html)
+ [PutEventsConfiguration](https://docs.aws.amazon.com/chime/latest/APIReference/API_PutEventsConfiguration.html)

# 챗봇으로 전송된 Amazon Chime 이벤트
<a name="events-bots"></a>

Amazon Chime에서 챗봇으로 전송된 이벤트는 다음과 같습니다.
+ **Invite** – 챗봇이 Amazon Chime 채팅룸에 추가된 경우 전송됩니다.
+ **Mention** – 채팅룸의 사용자가 챗봇을 @언급한 경우 전송됩니다.
+ **Remove** – Amazon Chime 채팅룸에서 챗봇이 제거된 경우 전송됩니다.

다음은 이러한 각 이벤트에 대해 챗봇에 전송된 JSON 페이로드를 보여주는 예입니다.

**Example : Invite 이벤트**  

```
            {
              "Sender": {
                            "SenderId": "user@example.com",
                            "SenderIdType": "EmailId"
                         },
              "Discussion": {
                            "DiscussionId": "abcdef12-g34h-56i7-j8kl-mn9opqr012st",
                            "DiscussionType": "Room"
                            },
              "EventType": "Invite",
              "InboundHttpsEndpoint": {
                                        "EndpointType": "Persistent",
                                        "Url": "https://hooks.a.chime.aws/incomingwebhooks/a1b2c34d-5678-90e1-f23g-h45i67j8901k?token=ABCDefGHiJK1LMnoP2Q3RST4uvwxYZAbC56DeFghIJkLM7N8OP9QRsTuV0WXYZABcdefgHiJ"
                                      },
              "EventTimestamp": "2019-04-04T21:27:52.736Z"
            }
```

**Example : Mention 이벤트**  

```
            {
                "Sender": {
                            "SenderId": "user@example.com",
                            "SenderIdType": "EmailId"
                          },
                "Discussion": {
                                "DiscussionId": "abcdef12-g34h-56i7-j8kl-mn9opqr012st",
                                "DiscussionType": "Room"
                              },
                "EventType": "Mention",
                "InboundHttpsEndpoint": {
                                            "EndpointType": "ShortLived",
                                            "Url": "https://hooks.a.chime.aws/incomingwebhooks/a1b2c34d-5678-90e1-f23g-h45i67j8901k?token=ABCDefGHiJK1LMnoP2Q3RST4uvwxYZAbC56DeFghIJkLM7N8OP9QRsTuV0WXYZABcdefgHiJ"
                                        },
                "EventTimestamp": "2019-04-04T21:30:43.181Z",
                "Message": "@botDisplayName@example.com Hello Chatbot"
            }
```

**참고**  
Mention 이벤트에 대한 `InboundHttpsEndpoint` URL은 전송 2분 후에 만료됩니다.

**Example : Remove 이벤트**  

```
            {
                "Sender": {
                            "SenderId": "user@example.com",
                            "SenderIdType": "EmailId"
                          },
                "Discussion": {
                                "DiscussionId": "abcdef12-g34h-56i7-j8kl-mn9opqr012st",
                                "DiscussionType": "Room"
                              },
                "EventType": "Remove",
                "EventTimestamp": "2019-04-04T21:27:29.626Z"
            }
```

# Amazon Chime에 사용할 웹후크 생성
<a name="webhooks"></a>

웹후크를 사용하면 웹 애플리케이션이 서로 실시간으로 통신할 수 있습니다. 일반적으로 웹후크는 작업이 발생할 때 알림을 보냅니다. 예를 들어, 온라인 쇼핑 사이트를 운영한다고 가정해 보겠습니다. 웹후크는 고객이 장바구니에 품목을 추가하거나, 주문 상품을 결제하거나, 의견을 전송할 경우 알림을 보낼 수 있습니다. 웹후크는 기존 애플리케이션만큼 많은 프로그래밍이 필요하지 않으며 처리 능력도 많이 사용하지 않습니다. 웹후크가 없으면 프로그램에서 데이터를 실시간으로 가져오기 위해 데이터를 자주 폴링해야 합니다. 웹후크가 있으면 전송 애플리케이션이 데이터를 즉시 게시합니다.

수신되는 웹후크는 프로그래밍 방식으로 Amazon Chime 채팅룸에 메시지를 전송합니다. 예를 들어 웹후크는 고객 서비스 팀에 우선순위가 높은 새로운 티켓이 생성된 것을 알리고 채팅룸에 해당 티켓에 대한 링크를 추가할 수 있습니다.

Webhook 메시지는 마크다운으로 서식 지정할 수 있으며 이모티콘을 포함할 수 있습니다. HTTP 링크와 이메일 주소는 활성 링크로 표시됩니다. 또한 메시지에 @All 및 @Present 주석을 포함시켜 모든 구성원과 현재 채팅룸 구성원에게 알림을 보낼 수 있습니다. 채팅룸 참가자를 직접 @mention하려면 별칭 또는 전체 이메일 주소를 사용하십시오. 예: @`alias` 또는 @`alias@domain.com`.

웹후크는 채팅룸에서만 사용할 수 있으며 공유할 수 없습니다. Amazon Chime 채팅룸 관리자는 각 채팅룸에 최대 10개의 웹후크를 추가할 수 있습니다.

웹후크를 생성한 후에는 다음 절차에 나온 것처럼 Amazon Chime 채팅룸에 웹후크를 통합할 수 있습니다.

**웹후크를 채팅룸에 통합하려면**

1. 채팅룸 관리자에게서 웹후크 URL을 얻습니다. 자세한 내용은 Amazon Chime 사용 설명서의 [채팅방에 웹훅 추가](https://docs.aws.amazon.com/chime/latest/ug/chat-webhooks.html)를 참조하세요.**

1. 생성한 스크립트 또는 애플리케이션의 웹후크 URL을 사용하여 채팅룸에 메시지를 전송합니다.

   1. URL은 HTTP POST 요청을 수락합니다.

   1. Amazon Chime 웹후크는 JSON 페이로드와 단일 키 **콘텐츠**를 수락합니다. 다음은 curl 명령과 페이로드의 예입니다.

      ```
      curl -X POST "<Insert your webhook URL here>" -H "Content-Type:application/json" --data '{"Content":"Message Body emoji test: :) :+1: link test: http://sample.com email test: marymajor@example.com All member callout: @All All Present member callout: @Present"}'
      ```

      다음은 Windows 사용자를 위한 예제 PowerShell 명령입니다.

      ```
      Invoke-WebRequest -Uri '<Insert your webhook URL here>' -Method 'Post' -ContentType 'application/JSON' -Body '{"Content":"Message Body emoji test: :) :+1: link test: http://sample.com email test: marymajor@example.com All member callout: @All All Present member callout: @Present"}'
      ```

외부 프로그램이 Webhook URL로 HTTP POST를 보내면 서버는 Webhook이 유효하며 할당된 채팅룸이 있는지 확인합니다. 웹훅은 이름 옆에 웹훅 아이콘과 함께 채팅방 목록에 나타납니다. 웹훅이 보낸 채팅방 메시지는 뒤에 (**Webhook**)이 나오는 웹훅 이름으로 채팅방에 표시됩니다.

**참고**  
CORS는 현재 Webhook에 대해 활성화되어 있지 않습니다.

## 웹후크 오류 해결
<a name="webhook-errors"></a>

다음은 Webhook 관련 오류 목록입니다.
+ 각 Webhook의 수신 Webhook 속도 한도는 채팅룸당 1TPS입니다. 조절(throttling)을 수행하면 HTTP 429 오류가 발생합니다.
+ Webhook이 게시하는 메시지는 4KB 미만이어야 합니다. 메시지 페이로드가 이보다 크면 HTTP 413 오류가 발생합니다.
+ @All and @Present 주석을 포함하는 Webhook에 의해 게시된 메시지는 멤버가 50명 이하인 채팅룸에서만 작동합니다. 멤버가 50명을 초과하면 HTTP 400 오류가 발생합니다.
+ Webhook URL이 다시 생성된 경우 이전 URL을 사용하면 HTTP 404 오류가 발생합니다.
+ 채팅룸의 Webhook URL이 삭제된 경우 이전 URL을 사용하면 HTTP 404 오류가 발생합니다.
+ Webhook URL이 유효하지 않으면 HTTP 403 오류가 발생합니다.
+ 서비스를 사용할 수 없는 경우 사용자는 응답에 HTTP 503 오류를 받습니다.