

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 聊天应用程序政策语法和示例
<a name="orgs_manage_policies_chatbot_syntax"></a>

本主题将介绍聊天应用程序政策语法并提供示例。

## 聊天应用程序政策的语法
<a name="chatbot-policy-syntax-reference"></a>

聊天应用程序政策是一个纯文本文件，根据 [JSON](http://json.org) 的规则设置结构。聊天应用程序政策的语法遵循管理策略类型的语法。有关该语法的完整讨论，请参阅[了解管理策略继承](orgs_manage_policies_inheritance_mgmt.md)。本主题重点介绍如何使用该常规语法来满足聊天应用程序政策类型的特定要求。

以下示例展示了聊天应用程序政策的基本语法：

```
{
    "chatbot":{
       "platforms":{
          "slack":{
             "client":{
                "@@assign":"{{enabled}}" // enabled | disabled
             },
             "workspaces": { // limit 255
                   "@@assign":[
                      "{{Slack-Workspace-Id}}"
                   ]
             },
             "default":{
                "supported_channel_types":{
                   "@@assign":[
                      "{{private}}" // public | private
                   ]
                },
                "supported_role_settings":{
                   "@@assign":[
                      "{{user_role}}" // user_role | channel_role
                   ]
                }
             },
             "overrides":{ // limit 255
                "{{Slack-Workspace-Id}}":{
                   "supported_channel_types":{
                      "@@assign":[
                         "{{public}}" // public | private
                      ]
                   },
                   "supported_role_settings":{
                      "@@assign":[
                         "{{user_role}}" // user_role | channel_role
                      ]
                   }
                }
             }
          },
          "microsoft_teams":{
             "client":{
                "@@assign":"{{enabled}}"
             },
             "tenants":{ // limit 36
                "{{Microsoft-Teams-Tenant-Id}}":{ // limit 36
                   "@@assign":[
                      "{{Microsoft-Teams-Team-Id}}"
                   ]
                }
             },
             "default":{
                "supported_role_settings":{
                   "@@assign":[
                      "{{user_role}}" // user_role | channel_role
                   ]
                }
             },
             "overrides":{ // limit 36
                "{{Microsoft-Teams-Tenant-Id}}":{ // limit 36
                   "{{Microsoft-Teams-Team-Id}}":{
                      "supported_role_settings":{
                         "@@assign":[
                            "{{user_role}}" // user_role | channel_role
                         ]
                      }
                   }
                }
             }
          },
          "chime":{
            "client":{
               "@@assign":"{{disabled}}" // enabled | disabled
            }
         } 
       },
       "default":{
          "client":{
             "@@assign":"{{disabled}}" // enabled | disabled
          }
       }
    }
 }
```

此聊天应用程序政策包含以下元素：
+ `chatbot` 字段键名称。聊天应用程序政策始终以此固定键名称开头。这是此示例策略中的第一行。
+ 在 `chatbot` 下有一个 `platforms` 块，其中包含不同受支持聊天应用程序的配置：Slack、Microsoft Teams 和 Amazon Chime。
  + 对于 Slack，有以下字段可用：
    + `"client"`:
      + `"enabled"`：Slack 客户端已启用。允许 Slack 集成。
      + `"disabled"`：Slack 客户端已禁用。不允许 Slack 集成。
    + `"workspaces"`：允许的 Slack 工作区列表，以逗号分隔。在此示例中，允许的 Slack 工作区为和。{{Slack-Workspace-Id1}} {{Slack-Workspace-Id2}}
    + `"default"`：Slack 工作区的默认设置。
      + `"supported_channel_types"`:
        + `"public"`：默认情况下，范围内的 Slack 工作区会允许公有 Slack 频道。
        + `"private"`：默认情况下，范围内的 Slack 工作区会允许私有 Slack 频道。
      + `supported_role_settings`:
        + `"user_role"`: 默认情况下，范围内的 Slack 工作区会允许用户级别的 IAM 角色。
        + `"channel_role"`: 默认情况下，范围内的 Slack 工作区会允许频道级别的 IAM 角色。
    + `"overrides"`：Slack 工作区的覆盖设置。
      + `{{Slack-Workspace-Id2}}`：适用覆盖设置的 Slack 工作区列表，以逗号分隔。在此示例中，Slack 工作空间为{{Slack-Workspace-Id2}}。
        + `"supported_channel_types"`:
          + `"public"`：覆盖有关范围内的 Slack 工作区是否允许公有 Slack 频道的设置。
          + `"private"`：覆盖有关范围内的 Slack 工作区是否允许私有 Slack 频道的设置。
        + `supported_role_settings`:
          + `"user_role"`：覆盖范围内的 Slack 工作区是否允许用户级别的 IAM 角色的设置。
          + `"channel_role"`：覆盖范围内的 Slack 工作区是否允许频道级别的 IAM 角色的设置。
  + 对于 Microsoft Teams，有以下字段可用：
    + `"client"`:
      + `"enabled"`：Microsoft Teams 客户端已启用。允许 Microsoft Teams 集成。
      + `"disabled"`：Microsoft Teams 客户端已禁用。不允许 Microsoft Teams 集成。
    + `"tenants"`：允许的 Microsoft Teams 租户列表，以逗号分隔。在此示例中，允许的租户是{{Microsoft-Teams-Tenant-Id}}。
      + `{{Microsoft-Teams-Tenant-Id}}`：该租户内允许的团队列表，以逗号分隔。在此示例中，允许的队伍是{{Microsoft-Teams-Team-Id}}。
    + `"default"`：该租户内团队的默认设置。
      + `supported_role_settings`:
        + `"user_role"`：默认情况下，范围内的团队会允许用户级别的 IAM 角色。
        + `"channel_role"`：默认情况下，范围内的团队会允许频道级别的 IAM 角色。
    + `"overrides"`：Microsoft Teams 租户的覆盖设置。
      + `{{Microsoft-Teams-Tenant-Id}}`：适用覆盖设置的租户列表，以逗号分隔。在此示例中，租户是{{Microsoft-Teams-Tenant-Id}}。
        + `{{Microsoft-Teams-Team-Id}}`：该租户内的团队列表，以逗号分隔。在此示例中，允许的队伍是{{Microsoft-Teams-Team-Id}}。
          + `supported_role_settings`:
            + `"user_role"`：覆盖范围内的团队是否允许用户级别的 IAM 角色的设置。
            + `"channel_role"`：覆盖范围内的团队是否允许频道级别的 IAM 角色的设置。
  + 对于 Amazon Chime，有以下字段可用：
    + `"client"`:
      + `"enabled"`：Amazon Chime 客户端已启用。允许 Amazon Chime 集成。
      + `"disabled"`：Amazon Chime 客户端已禁用。不允许 Amazon Chime 集成。
+ 在 `chatbot` 下有一个 `default` 块，除非在更低级别被覆盖，否则该块会在整个组织中禁用聊天应用程序中的 Amazon Q 开发者版。此默认设置还会禁用聊天应用程序中的 Amazon Q 开发者版支持的任何新聊天应用程序。例如，假设聊天应用程序中的 Amazon Q 开发者版支持某个新聊天应用程序，则此默认设置也会禁用该新受支持的聊天应用程序。

**注意**  
有关频道级别 IAM 角色和用户级别 IAM 角色的更多信息，请参阅《Amazon Q Developer in chat applications Administrator Guide》**中的 [Understanding Amazon Q Developer in chat applications permissions](https://docs.amazonaws.cn/chatbot/latest/adminguide/understanding-permissions.html)。

## 聊天应用程序政策示例
<a name="chatbot-policy-examples"></a>

下面的示例策略仅供参考。

### 示例 1：仅允许特定工作区内的私有 Slack 频道，禁用 Microsoft Teams，支持所有身份验证模式
<a name="chatbot-policy-example-1"></a>

以下策略侧重于控制 Slack 和 Microsoft Teams 聊天机器人集成的允许配置。

```
{
   "chatbot": {
      "platforms": {
         "slack": {
            "client": {
               "@@assign": "enabled"
            },
            "workspaces": {
               "@@assign": [
                  "{{Slack-Workspace-Id}}"
               ]
            },
            "default": {
               "supported_channel_types": {
                  "@@assign": [
                     "private"
                  ]
               },
               "supported_role_settings": {
                  "@@assign": [
                     "channel_role",
                     "user_role"
                  ]
               }
            }
         },
         "microsoft_teams": {
            "client": {
               "@@assign": "disabled"
            }
         },
         "chime":{
            "client":{
               "@@assign":"disabled"
            }
         },
         "default":{
            "client":{
               "@@assign":"disabled"
            }
         }
      }
   }
}
```

**Slack**
+ Slack 客户端已启用。
+ 只允许使用特定的 Slack 工作空间{{Slack-Workspace-Id}}。
+ 默认设置为仅允许私有 Slack 频道、频道级别 IAM 角色和用户级别 IAM 角色。

**Microsoft Teams**
+ Microsoft Teams 客户端已禁用。

**Amazon Chime**
+ Amazon Chime 客户端已禁用。

**其他详细信息**
+ 底部的 `default` 块将客户端设置为禁用，除非在更低级别被覆盖，否则将在整个组织中禁用聊天应用程序中的 Amazon Q 开发者版。此默认设置还会禁用聊天应用程序中的 Amazon Q 开发者版支持的任何新聊天应用程序。例如，假设聊天应用程序中的 Amazon Q 开发者版支持某个新聊天应用程序，则此默认设置也会禁用该新受支持的聊天应用程序。

### 示例 2：仅允许使用用户级别 IAM 角色的 Slack 集成
<a name="chatbot-policy-example-2"></a>

以下策略对 Slack 采取更宽松的方法，允许所有 Slack 工作区，但将身份验证模式限定为仅限用户级别 IAM 角色。

```
{
   "chatbot":{
      "platforms":{
         "slack":{
            "client":{
               "@@assign":"enabled"
            },
            "workspaces":
               {
                  "@@assign":[
                     "*"
                  ]
               },
            "default":{
               "supported_role_settings":{
                  "@@assign":[
                     "user_role"
                  ]
               }
            }
         },
         "microsoft_teams":{
            "client":{
               "@@assign":"disabled"
            }
         },
         "chime":{
            "client":{
               "@@assign":"disabled"
            }
         }
      },
      "default":{
         "client":{
            "@@assign":"disabled"
         }
      }
   }
}
```

**Slack**
+ Slack 客户端已启用。
+ 没有使用通配符 `"*"` 定义任何特定的 Slack 工作区，因此允许使用所有工作区。
+ 默认设置为仅允许用户级别 IAM 角色。

**Microsoft Teams**
+ Microsoft Teams 客户端已禁用。

**Amazon Chime**
+ Amazon Chime 客户端已禁用。

**其他详细信息**
+ 底部的 `default` 块将客户端设置为禁用，除非在更低级别被覆盖，否则将在整个组织中禁用聊天应用程序中的 Amazon Q 开发者版。此默认设置还会禁用聊天应用程序中的 Amazon Q 开发者版支持的任何新聊天应用程序。例如，假设聊天应用程序中的 Amazon Q 开发者版支持某个新聊天应用程序，则此默认设置也会禁用该新受支持的聊天应用程序。

### 示例 3：仅允许特定租户中的 Microsoft Teams 集成
<a name="chatbot-policy-example-3"></a>

以下示例策略将组织锁定，从而仅允许指定租户内的 Microsoft Teams 聊天机器人集成，同时完全阻止 Slack 集成。

```
{
   "chatbot":{
      "platforms":{
         "slack":{
            "client": {
               "@@assign": "disabled"
            },
         },
         "microsoft_teams":{
            "client": {
               "@@assign": "enabled"
            },
            "tenants":{
               "{{Microsoft-Teams-Tenant-Id}}":{
                  "@@assign":[
                     "*"
                  ]
               }
            }
         },
         "chime": {
            "client":{
               "@@assign": "disabled"
            }
         }  
      }
   }
}
```

**Slack**
+ Slack 客户端已禁用。

**Microsoft Teams**
+ {{Microsoft-Teams-Tenant-Id}}仅允许特定租户，使用通配符`"*"`允许该租户中的所有团队。

**Amazon Chime**
+ Amazon Chime 客户端已禁用。

**其他详细信息**
+ 底部的 `default` 块将客户端设置为禁用，除非在更低级别被覆盖，否则将在整个组织中禁用聊天应用程序中的 Amazon Q 开发者版。此默认设置还会禁用聊天应用程序中的 Amazon Q 开发者版支持的任何新聊天应用程序。例如，假设聊天应用程序中的 Amazon Q 开发者版支持某个新聊天应用程序，则此默认设置也会禁用该新受支持的聊天应用程序。

### 示例 4：允许聊天应用程序中的 Amazon Q 开发者版对 Slack 工作区和 Microsoft Teams 租户进行受限访问
<a name="chatbot-policy-example-4"></a>

以下策略允许聊天应用程序中的 Amazon Q 开发者版对选定的 Slack 工作区和 Microsoft Teams 租户进行受限访问。

```
{
    "chatbot":{
       "platforms":{
          "slack":{
             "client":{
                "@@assign":"enabled"
             },
             "workspaces": { 
                   "@@assign":[
                      "{{Slack-Workspace-Id1}}",
                      "{{Slack-Workspace-Id2}}"
                   ]
             },
             "default":{
                "supported_channel_types":{
                   "@@assign":[
                      "private"
                   ]
                },
                "supported_role_settings":{
                   "@@assign":[
                      "user_role"
                   ]
                }
             },
             "overrides":{
                "{{Slack-Workspace-Id2}}":{
                   "supported_channel_types":{
                      "@@assign":[
                         "public",
                         "private"
                      ]
                   },
                   "supported_role_settings":{
                      "@@assign":[
                         "channel_role",
                         "user_role"
                      ]
                   }
                }
             }
          },
          "microsoft_teams":{
             "client":{
                "@@assign":"enabled"
             },
             "tenants":{
                "{{Microsoft-Teams-Tenant-Id}}":{
                   "@@assign":[
                      "{{Microsoft-Teams-Team-Id}}"
                   ]
                }
             },
             "default":{
                "supported_role_settings":{
                   "@@assign":[
                      "{{user_role}}"
                   ]
                }
             },
             "overrides":{
                "{{Microsoft-Teams-Tenant-Id}}":{
                   "{{Microsoft-Teams-Team-Id}}":{
                      "supported_role_settings":{
                         "@@assign":[
                            "channel_role",
                            "user_role"
                         ]
                      }
                   }
                }
             }
          }
       },
       "default":{
          "client":{
             "@@assign":"disabled"
          }
       }
    }
 }
```

**Slack**
+ Slack 客户端已启用。
+ 允许的 Slack 工作区是和。{{Slack-Workspace-Id1}} {{Slack-Workspace-Id2}}
+ Slack 的默认设置为仅允许私有频道和用户级别 IAM 角色。
+ 工作空间有一个替代项{{Slack-Workspace-Id2}}，允许公共和私有渠道以及频道级别 IAM 角色和用户级 IAM 角色。

**Microsoft Teams**
+ Microsoft Teams 客户端已启用。
+ 允许的 Team {{Microsoft-Teams-Tenant-Id}} s 租户加入团队{{Microsoft-Teams-Team-Id}}。
+ 默认设置为仅允许用户级别 IAM 角色。
+ 租户有一个替代项{{Microsoft-Teams-Tenant-Id}}，允许团队同时使用频道级别 IAM 角色和用户级 IAM 角色{{Microsoft-Teams-Team-Id}}。

**其他详细信息**
+ 底部的 `default` 块将客户端设置为禁用，除非在更低级别被覆盖，否则将在整个组织中禁用聊天应用程序中的 Amazon Q 开发者版。这意味着此示例中禁用了 Amazon Chime。此默认设置还会禁用聊天应用程序中的 Amazon Q 开发者版支持的任何新聊天应用程序。例如，假设聊天应用程序中的 Amazon Q 开发者版支持某个新聊天应用程序，则此默认设置也会禁用该新受支持的聊天应用程序。