Browse Source

由择仁发起的CCC SDK自动发布, BUILD_ID=281, 版本号:0.5.7

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao 8 years ago
parent
commit
d93be95f30

+ 3 - 0
ChangeLog.txt

@@ -1,3 +1,6 @@
+2017-12-18 Version: 0.5.7
+1, This is the first release of CCC Open API.
+
 2017-12-15 Version: 0.5.6
 1, Update SetReqAuthConfig.
 2, Add Scdn API.

+ 114 - 0
services/ccc/add_phone_number.go

@@ -0,0 +1,114 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) AddPhoneNumber(request *AddPhoneNumberRequest) (response *AddPhoneNumberResponse, err error) {
+	response = CreateAddPhoneNumberResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) AddPhoneNumberWithChan(request *AddPhoneNumberRequest) (<-chan *AddPhoneNumberResponse, <-chan error) {
+	responseChan := make(chan *AddPhoneNumberResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AddPhoneNumber(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) AddPhoneNumberWithCallback(request *AddPhoneNumberRequest, callback func(response *AddPhoneNumberResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AddPhoneNumberResponse
+		var err error
+		defer close(result)
+		response, err = client.AddPhoneNumber(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type AddPhoneNumberRequest struct {
+	*requests.RpcRequest
+	ContactFlowId string `position:"Query" name:"ContactFlowId"`
+	InstanceId    string `position:"Query" name:"InstanceId"`
+	Usage         string `position:"Query" name:"Usage"`
+	PhoneNumber   string `position:"Query" name:"PhoneNumber"`
+	AccessKeyId   string `position:"Query" name:"AccessKeyId"`
+}
+
+type AddPhoneNumberResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	PhoneNumber    struct {
+		PhoneNumberId          string `json:"PhoneNumberId"`
+		InstanceId             string `json:"InstanceId"`
+		Number                 string `json:"Number"`
+		PhoneNumberDescription string `json:"PhoneNumberDescription"`
+		TestOnly               bool   `json:"TestOnly"`
+		RemainingTime          int    `json:"RemainingTime"`
+		AllowOutbound          bool   `json:"AllowOutbound"`
+		Usage                  string `json:"Usage"`
+		Trunks                 int    `json:"Trunks"`
+		ContactFlow            struct {
+			ContactFlowId          string `json:"ContactFlowId"`
+			InstanceId             string `json:"InstanceId"`
+			ContactFlowName        string `json:"ContactFlowName"`
+			ContactFlowDescription string `json:"ContactFlowDescription"`
+			Type                   string `json:"Type"`
+		} `json:"ContactFlow"`
+	} `json:"PhoneNumber"`
+}
+
+func CreateAddPhoneNumberRequest() (request *AddPhoneNumberRequest) {
+	request = &AddPhoneNumberRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "AddPhoneNumber", "", "")
+	return
+}
+
+func CreateAddPhoneNumberResponse() (response *AddPhoneNumberResponse) {
+	response = &AddPhoneNumberResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 97 - 0
services/ccc/assign_users.go

@@ -0,0 +1,97 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) AssignUsers(request *AssignUsersRequest) (response *AssignUsersResponse, err error) {
+	response = CreateAssignUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) AssignUsersWithChan(request *AssignUsersRequest) (<-chan *AssignUsersResponse, <-chan error) {
+	responseChan := make(chan *AssignUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.AssignUsers(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) AssignUsersWithCallback(request *AssignUsersRequest, callback func(response *AssignUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *AssignUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.AssignUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type AssignUsersRequest struct {
+	*requests.RpcRequest
+	UserRamId    *[]string `position:"Query" name:"UserRamId"  type:"Repeated"`
+	SkillLevel   *[]string `position:"Query" name:"SkillLevel"  type:"Repeated"`
+	InstanceId   string    `position:"Query" name:"InstanceId"`
+	RoleId       *[]string `position:"Query" name:"RoleId"  type:"Repeated"`
+	SkillGroupId *[]string `position:"Query" name:"SkillGroupId"  type:"Repeated"`
+	AccessKeyId  string    `position:"Query" name:"AccessKeyId"`
+}
+
+type AssignUsersResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+}
+
+func CreateAssignUsersRequest() (request *AssignUsersRequest) {
+	request = &AssignUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "AssignUsers", "", "")
+	return
+}
+
+func CreateAssignUsersResponse() (response *AssignUsersResponse) {
+	response = &AssignUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 43 - 0
services/ccc/client.go

@@ -0,0 +1,43 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth"
+)
+
+type Client struct {
+	sdk.Client
+}
+
+func NewClient() (client *Client, err error) {
+	client = &Client{}
+	err = client.Init()
+	return
+}
+
+func NewClientWithOptions(regionId string, config *sdk.Config, credential auth.Credential) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithOptions(regionId, config, credential)
+	return
+}
+
+func NewClientWithAccessKey(regionId, accessKeyId, accessKeySecret string) (client *Client, err error) {
+	client = &Client{}
+	err = client.InitWithAccessKey(regionId, accessKeyId, accessKeySecret)
+	return
+}

+ 99 - 0
services/ccc/create_skill_group.go

@@ -0,0 +1,99 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) CreateSkillGroup(request *CreateSkillGroupRequest) (response *CreateSkillGroupResponse, err error) {
+	response = CreateCreateSkillGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) CreateSkillGroupWithChan(request *CreateSkillGroupRequest) (<-chan *CreateSkillGroupResponse, <-chan error) {
+	responseChan := make(chan *CreateSkillGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateSkillGroup(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) CreateSkillGroupWithCallback(request *CreateSkillGroupRequest, callback func(response *CreateSkillGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateSkillGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateSkillGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type CreateSkillGroupRequest struct {
+	*requests.RpcRequest
+	SkillLevel            *[]string `position:"Query" name:"SkillLevel"  type:"Repeated"`
+	InstanceId            string    `position:"Query" name:"InstanceId"`
+	OutboundPhoneNumberId *[]string `position:"Query" name:"OutboundPhoneNumberId"  type:"Repeated"`
+	Name                  string    `position:"Query" name:"Name"`
+	Description           string    `position:"Query" name:"Description"`
+	UserId                *[]string `position:"Query" name:"UserId"  type:"Repeated"`
+	AccessKeyId           string    `position:"Query" name:"AccessKeyId"`
+}
+
+type CreateSkillGroupResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	SkillGroupId   string `json:"SkillGroupId"`
+}
+
+func CreateCreateSkillGroupRequest() (request *CreateSkillGroupRequest) {
+	request = &CreateSkillGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "CreateSkillGroup", "", "")
+	return
+}
+
+func CreateCreateSkillGroupResponse() (response *CreateSkillGroupResponse) {
+	response = &CreateSkillGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 101 - 0
services/ccc/create_user.go

@@ -0,0 +1,101 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) CreateUser(request *CreateUserRequest) (response *CreateUserResponse, err error) {
+	response = CreateCreateUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) CreateUserWithChan(request *CreateUserRequest) (<-chan *CreateUserResponse, <-chan error) {
+	responseChan := make(chan *CreateUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateUser(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) CreateUserWithCallback(request *CreateUserRequest, callback func(response *CreateUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateUserResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type CreateUserRequest struct {
+	*requests.RpcRequest
+	SkillLevel   *[]string `position:"Query" name:"SkillLevel"  type:"Repeated"`
+	InstanceId   string    `position:"Query" name:"InstanceId"`
+	LoginName    string    `position:"Query" name:"LoginName"`
+	Phone        string    `position:"Query" name:"Phone"`
+	RoleId       *[]string `position:"Query" name:"RoleId"  type:"Repeated"`
+	DisplayName  string    `position:"Query" name:"DisplayName"`
+	SkillGroupId *[]string `position:"Query" name:"SkillGroupId"  type:"Repeated"`
+	Email        string    `position:"Query" name:"Email"`
+	AccessKeyId  string    `position:"Query" name:"AccessKeyId"`
+}
+
+type CreateUserResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	UserId         string `json:"UserId"`
+}
+
+func CreateCreateUserRequest() (request *CreateUserRequest) {
+	request = &CreateUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "CreateUser", "", "")
+	return
+}
+
+func CreateCreateUserResponse() (response *CreateUserResponse) {
+	response = &CreateUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/ccc/delete_skill_group.go

@@ -0,0 +1,94 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) DeleteSkillGroup(request *DeleteSkillGroupRequest) (response *DeleteSkillGroupResponse, err error) {
+	response = CreateDeleteSkillGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) DeleteSkillGroupWithChan(request *DeleteSkillGroupRequest) (<-chan *DeleteSkillGroupResponse, <-chan error) {
+	responseChan := make(chan *DeleteSkillGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteSkillGroup(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) DeleteSkillGroupWithCallback(request *DeleteSkillGroupRequest, callback func(response *DeleteSkillGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteSkillGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteSkillGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type DeleteSkillGroupRequest struct {
+	*requests.RpcRequest
+	InstanceId   string `position:"Query" name:"InstanceId"`
+	SkillGroupId string `position:"Query" name:"SkillGroupId"`
+	AccessKeyId  string `position:"Query" name:"AccessKeyId"`
+}
+
+type DeleteSkillGroupResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+}
+
+func CreateDeleteSkillGroupRequest() (request *DeleteSkillGroupRequest) {
+	request = &DeleteSkillGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "DeleteSkillGroup", "", "")
+	return
+}
+
+func CreateDeleteSkillGroupResponse() (response *DeleteSkillGroupResponse) {
+	response = &DeleteSkillGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/ccc/get_config.go

@@ -0,0 +1,100 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) GetConfig(request *GetConfigRequest) (response *GetConfigResponse, err error) {
+	response = CreateGetConfigResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetConfigWithChan(request *GetConfigRequest) (<-chan *GetConfigResponse, <-chan error) {
+	responseChan := make(chan *GetConfigResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetConfig(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetConfigWithCallback(request *GetConfigRequest, callback func(response *GetConfigResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetConfigResponse
+		var err error
+		defer close(result)
+		response, err = client.GetConfig(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetConfigRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	Name        string `position:"Query" name:"Name"`
+	ObjectType  string `position:"Query" name:"ObjectType"`
+	ObjectId    string `position:"Query" name:"ObjectId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type GetConfigResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	ConfigItem     struct {
+		Name  string `json:"Name"`
+		Value string `json:"Value"`
+	} `json:"ConfigItem"`
+}
+
+func CreateGetConfigRequest() (request *GetConfigRequest) {
+	request = &GetConfigRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "GetConfig", "", "")
+	return
+}
+
+func CreateGetConfigResponse() (response *GetConfigResponse) {
+	response = &GetConfigResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 98 - 0
services/ccc/get_service_extensions.go

@@ -0,0 +1,98 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) GetServiceExtensions(request *GetServiceExtensionsRequest) (response *GetServiceExtensionsResponse, err error) {
+	response = CreateGetServiceExtensionsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetServiceExtensionsWithChan(request *GetServiceExtensionsRequest) (<-chan *GetServiceExtensionsResponse, <-chan error) {
+	responseChan := make(chan *GetServiceExtensionsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetServiceExtensions(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetServiceExtensionsWithCallback(request *GetServiceExtensionsRequest, callback func(response *GetServiceExtensionsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetServiceExtensionsResponse
+		var err error
+		defer close(result)
+		response, err = client.GetServiceExtensions(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetServiceExtensionsRequest struct {
+	*requests.RpcRequest
+	ServiceType string `position:"Query" name:"ServiceType"`
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type GetServiceExtensionsResponse struct {
+	*responses.BaseResponse
+	RequestId         string `json:"RequestId"`
+	Success           bool   `json:"Success"`
+	Code              string `json:"Code"`
+	Message           string `json:"Message"`
+	HttpStatusCode    int    `json:"HttpStatusCode"`
+	ServiceExtensions []struct {
+		Name   string `json:"Name"`
+		Number string `json:"Number"`
+	} `json:"ServiceExtensions"`
+}
+
+func CreateGetServiceExtensionsRequest() (request *GetServiceExtensionsRequest) {
+	request = &GetServiceExtensionsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "GetServiceExtensions", "", "")
+	return
+}
+
+func CreateGetServiceExtensionsResponse() (response *GetServiceExtensionsResponse) {
+	response = &GetServiceExtensionsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 122 - 0
services/ccc/get_user.go

@@ -0,0 +1,122 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) GetUser(request *GetUserRequest) (response *GetUserResponse, err error) {
+	response = CreateGetUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) GetUserWithChan(request *GetUserRequest) (<-chan *GetUserResponse, <-chan error) {
+	responseChan := make(chan *GetUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetUser(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) GetUserWithCallback(request *GetUserRequest, callback func(response *GetUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetUserResponse
+		var err error
+		defer close(result)
+		response, err = client.GetUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type GetUserRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	UserId      string `position:"Query" name:"UserId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type GetUserResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	User           struct {
+		UserId     string `json:"UserId"`
+		RamId      string `json:"RamId"`
+		InstanceId string `json:"InstanceId"`
+		Detail     struct {
+			LoginName   string `json:"LoginName"`
+			DisplayName string `json:"DisplayName"`
+			Phone       string `json:"Phone"`
+			Email       string `json:"Email"`
+			Department  string `json:"Department"`
+		} `json:"Detail"`
+		Roles []struct {
+			RoleId          string `json:"RoleId"`
+			InstanceId      string `json:"InstanceId"`
+			RoleName        string `json:"RoleName"`
+			RoleDescription string `json:"RoleDescription"`
+		} `json:"Roles"`
+		SkillLevels []struct {
+			SkillLevelId string `json:"SkillLevelId"`
+			Level        int    `json:"Level"`
+			Skill        struct {
+				SkillGroupId          string `json:"SkillGroupId"`
+				InstanceId            string `json:"InstanceId"`
+				SkillGroupName        string `json:"SkillGroupName"`
+				SkillGroupDescription string `json:"SkillGroupDescription"`
+			} `json:"Skill"`
+		} `json:"SkillLevels"`
+	} `json:"User"`
+}
+
+func CreateGetUserRequest() (request *GetUserRequest) {
+	request = &GetUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "GetUser", "", "")
+	return
+}
+
+func CreateGetUserResponse() (response *GetUserResponse) {
+	response = &GetUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 121 - 0
services/ccc/list_contact_flows.go

@@ -0,0 +1,121 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListContactFlows(request *ListContactFlowsRequest) (response *ListContactFlowsResponse, err error) {
+	response = CreateListContactFlowsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListContactFlowsWithChan(request *ListContactFlowsRequest) (<-chan *ListContactFlowsResponse, <-chan error) {
+	responseChan := make(chan *ListContactFlowsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListContactFlows(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListContactFlowsWithCallback(request *ListContactFlowsRequest, callback func(response *ListContactFlowsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListContactFlowsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListContactFlows(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListContactFlowsRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListContactFlowsResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	ContactFlows   []struct {
+		ContactFlowId          string `json:"ContactFlowId"`
+		InstanceId             string `json:"InstanceId"`
+		ContactFlowName        string `json:"ContactFlowName"`
+		ContactFlowDescription string `json:"ContactFlowDescription"`
+		Type                   string `json:"Type"`
+		AppliedVersion         string `json:"AppliedVersion"`
+		Versions               []struct {
+			ContactFlowVersionId          string `json:"ContactFlowVersionId"`
+			Version                       string `json:"Version"`
+			ContactFlowVersionDescription string `json:"ContactFlowVersionDescription"`
+			LastModified                  string `json:"LastModified"`
+			LastModifiedBy                string `json:"LastModifiedBy"`
+			LockedBy                      string `json:"LockedBy"`
+			Status                        string `json:"Status"`
+		} `json:"Versions"`
+		PhoneNumbers []struct {
+			PhoneNumberId          string `json:"PhoneNumberId"`
+			InstanceId             string `json:"InstanceId"`
+			Number                 string `json:"Number"`
+			PhoneNumberDescription string `json:"PhoneNumberDescription"`
+			TestOnly               bool   `json:"TestOnly"`
+			RemainingTime          int    `json:"RemainingTime"`
+			AllowOutbound          bool   `json:"AllowOutbound"`
+			Usage                  string `json:"Usage"`
+			Trunks                 int    `json:"Trunks"`
+		} `json:"PhoneNumbers"`
+	} `json:"ContactFlows"`
+}
+
+func CreateListContactFlowsRequest() (request *ListContactFlowsRequest) {
+	request = &ListContactFlowsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListContactFlows", "", "")
+	return
+}
+
+func CreateListContactFlowsResponse() (response *ListContactFlowsResponse) {
+	response = &ListContactFlowsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/ccc/list_phone_numbers.go

@@ -0,0 +1,112 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListPhoneNumbers(request *ListPhoneNumbersRequest) (response *ListPhoneNumbersResponse, err error) {
+	response = CreateListPhoneNumbersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListPhoneNumbersWithChan(request *ListPhoneNumbersRequest) (<-chan *ListPhoneNumbersResponse, <-chan error) {
+	responseChan := make(chan *ListPhoneNumbersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListPhoneNumbers(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListPhoneNumbersWithCallback(request *ListPhoneNumbersRequest, callback func(response *ListPhoneNumbersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListPhoneNumbersResponse
+		var err error
+		defer close(result)
+		response, err = client.ListPhoneNumbers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListPhoneNumbersRequest struct {
+	*requests.RpcRequest
+	OutboundOnly string `position:"Query" name:"OutboundOnly"`
+	InstanceId   string `position:"Query" name:"InstanceId"`
+	AccessKeyId  string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListPhoneNumbersResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	PhoneNumbers   []struct {
+		PhoneNumberId          string `json:"PhoneNumberId"`
+		InstanceId             string `json:"InstanceId"`
+		Number                 string `json:"Number"`
+		PhoneNumberDescription string `json:"PhoneNumberDescription"`
+		TestOnly               bool   `json:"TestOnly"`
+		RemainingTime          int    `json:"RemainingTime"`
+		AllowOutbound          bool   `json:"AllowOutbound"`
+		Usage                  string `json:"Usage"`
+		Trunks                 int    `json:"Trunks"`
+		ContactFlow            struct {
+			ContactFlowId          string `json:"ContactFlowId"`
+			InstanceId             string `json:"InstanceId"`
+			ContactFlowName        string `json:"ContactFlowName"`
+			ContactFlowDescription string `json:"ContactFlowDescription"`
+			Type                   string `json:"Type"`
+		} `json:"ContactFlow"`
+	} `json:"PhoneNumbers"`
+}
+
+func CreateListPhoneNumbersRequest() (request *ListPhoneNumbersRequest) {
+	request = &ListPhoneNumbersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListPhoneNumbers", "", "")
+	return
+}
+
+func CreateListPhoneNumbersResponse() (response *ListPhoneNumbersResponse) {
+	response = &ListPhoneNumbersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/ccc/list_roles.go

@@ -0,0 +1,99 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListRoles(request *ListRolesRequest) (response *ListRolesResponse, err error) {
+	response = CreateListRolesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListRolesWithChan(request *ListRolesRequest) (<-chan *ListRolesResponse, <-chan error) {
+	responseChan := make(chan *ListRolesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListRoles(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListRolesWithCallback(request *ListRolesRequest, callback func(response *ListRolesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListRolesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListRoles(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListRolesRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListRolesResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	Roles          []struct {
+		RoleId          string `json:"RoleId"`
+		InstanceId      string `json:"InstanceId"`
+		RoleName        string `json:"RoleName"`
+		RoleDescription string `json:"RoleDescription"`
+	} `json:"Roles"`
+}
+
+func CreateListRolesRequest() (request *ListRolesRequest) {
+	request = &ListRolesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListRoles", "", "")
+	return
+}
+
+func CreateListRolesResponse() (response *ListRolesResponse) {
+	response = &ListRolesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/ccc/list_skill_groups.go

@@ -0,0 +1,113 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListSkillGroups(request *ListSkillGroupsRequest) (response *ListSkillGroupsResponse, err error) {
+	response = CreateListSkillGroupsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListSkillGroupsWithChan(request *ListSkillGroupsRequest) (<-chan *ListSkillGroupsResponse, <-chan error) {
+	responseChan := make(chan *ListSkillGroupsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListSkillGroups(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListSkillGroupsWithCallback(request *ListSkillGroupsRequest, callback func(response *ListSkillGroupsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListSkillGroupsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListSkillGroups(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListSkillGroupsRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListSkillGroupsResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	SkillGroups    []struct {
+		SkillGroupId          string `json:"SkillGroupId"`
+		InstanceId            string `json:"InstanceId"`
+		SkillGroupName        string `json:"SkillGroupName"`
+		AccSkillGroupName     string `json:"AccSkillGroupName"`
+		AccQueueName          string `json:"AccQueueName"`
+		SkillGroupDescription string `json:"SkillGroupDescription"`
+		UserCount             int    `json:"UserCount"`
+		OutboundPhoneNumbers  []struct {
+			PhoneNumberId          string `json:"PhoneNumberId"`
+			InstanceId             string `json:"InstanceId"`
+			Number                 string `json:"Number"`
+			PhoneNumberDescription string `json:"PhoneNumberDescription"`
+			TestOnly               bool   `json:"TestOnly"`
+			RemainingTime          int    `json:"RemainingTime"`
+			AllowOutbound          bool   `json:"AllowOutbound"`
+			Usage                  string `json:"Usage"`
+			Trunks                 int    `json:"Trunks"`
+		} `json:"OutboundPhoneNumbers"`
+	} `json:"SkillGroups"`
+}
+
+func CreateListSkillGroupsRequest() (request *ListSkillGroupsRequest) {
+	request = &ListSkillGroupsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListSkillGroups", "", "")
+	return
+}
+
+func CreateListSkillGroupsResponse() (response *ListSkillGroupsResponse) {
+	response = &ListSkillGroupsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 115 - 0
services/ccc/list_skill_groups_of_user.go

@@ -0,0 +1,115 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListSkillGroupsOfUser(request *ListSkillGroupsOfUserRequest) (response *ListSkillGroupsOfUserResponse, err error) {
+	response = CreateListSkillGroupsOfUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListSkillGroupsOfUserWithChan(request *ListSkillGroupsOfUserRequest) (<-chan *ListSkillGroupsOfUserResponse, <-chan error) {
+	responseChan := make(chan *ListSkillGroupsOfUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListSkillGroupsOfUser(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListSkillGroupsOfUserWithCallback(request *ListSkillGroupsOfUserRequest, callback func(response *ListSkillGroupsOfUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListSkillGroupsOfUserResponse
+		var err error
+		defer close(result)
+		response, err = client.ListSkillGroupsOfUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListSkillGroupsOfUserRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	UserId      string `position:"Query" name:"UserId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListSkillGroupsOfUserResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	SkillLevels    []struct {
+		SkillLevelId string `json:"SkillLevelId"`
+		Level        int    `json:"Level"`
+		Skill        struct {
+			SkillGroupId          string `json:"SkillGroupId"`
+			InstanceId            string `json:"InstanceId"`
+			SkillGroupName        string `json:"SkillGroupName"`
+			SkillGroupDescription string `json:"SkillGroupDescription"`
+			OutboundPhoneNumbers  []struct {
+				PhoneNumberId          string `json:"PhoneNumberId"`
+				InstanceId             string `json:"InstanceId"`
+				Number                 string `json:"Number"`
+				PhoneNumberDescription string `json:"PhoneNumberDescription"`
+				TestOnly               bool   `json:"TestOnly"`
+				RemainingTime          int    `json:"RemainingTime"`
+				AllowOutbound          bool   `json:"AllowOutbound"`
+				Usage                  string `json:"Usage"`
+				Trunks                 int    `json:"Trunks"`
+			} `json:"OutboundPhoneNumbers"`
+		} `json:"Skill"`
+	} `json:"SkillLevels"`
+}
+
+func CreateListSkillGroupsOfUserRequest() (request *ListSkillGroupsOfUserRequest) {
+	request = &ListSkillGroupsOfUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListSkillGroupsOfUser", "", "")
+	return
+}
+
+func CreateListSkillGroupsOfUserResponse() (response *ListSkillGroupsOfUserResponse) {
+	response = &ListSkillGroupsOfUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 129 - 0
services/ccc/list_users.go

@@ -0,0 +1,129 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListUsers(request *ListUsersRequest) (response *ListUsersResponse, err error) {
+	response = CreateListUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListUsersWithChan(request *ListUsersRequest) (<-chan *ListUsersResponse, <-chan error) {
+	responseChan := make(chan *ListUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListUsers(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListUsersWithCallback(request *ListUsersRequest, callback func(response *ListUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.ListUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListUsersRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	PageSize    string `position:"Query" name:"PageSize"`
+	PageNumber  string `position:"Query" name:"PageNumber"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListUsersResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	Users          struct {
+		TotalCount int `json:"TotalCount"`
+		PageNumber int `json:"PageNumber"`
+		PageSize   int `json:"PageSize"`
+		List       []struct {
+			UserId     string `json:"UserId"`
+			RamId      string `json:"RamId"`
+			InstanceId string `json:"InstanceId"`
+			Primary    bool   `json:"Primary"`
+			Detail     struct {
+				LoginName   string `json:"LoginName"`
+				DisplayName string `json:"DisplayName"`
+				Phone       string `json:"Phone"`
+				Email       string `json:"Email"`
+				Department  string `json:"Department"`
+			} `json:"Detail"`
+			Roles []struct {
+				RoleId          string `json:"RoleId"`
+				InstanceId      string `json:"InstanceId"`
+				RoleName        string `json:"RoleName"`
+				RoleDescription string `json:"RoleDescription"`
+			} `json:"Roles"`
+			SkillLevels []struct {
+				SkillLevelId string `json:"SkillLevelId"`
+				Level        int    `json:"Level"`
+				Skill        struct {
+					SkillGroupId          string `json:"SkillGroupId"`
+					InstanceId            string `json:"InstanceId"`
+					SkillGroupName        string `json:"SkillGroupName"`
+					SkillGroupDescription string `json:"SkillGroupDescription"`
+				} `json:"Skill"`
+			} `json:"SkillLevels"`
+		} `json:"List"`
+	} `json:"Users"`
+}
+
+func CreateListUsersRequest() (request *ListUsersRequest) {
+	request = &ListUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListUsers", "", "")
+	return
+}
+
+func CreateListUsersResponse() (response *ListUsersResponse) {
+	response = &ListUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 135 - 0
services/ccc/list_users_of_skill_group.go

@@ -0,0 +1,135 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ListUsersOfSkillGroup(request *ListUsersOfSkillGroupRequest) (response *ListUsersOfSkillGroupResponse, err error) {
+	response = CreateListUsersOfSkillGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ListUsersOfSkillGroupWithChan(request *ListUsersOfSkillGroupRequest) (<-chan *ListUsersOfSkillGroupResponse, <-chan error) {
+	responseChan := make(chan *ListUsersOfSkillGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListUsersOfSkillGroup(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ListUsersOfSkillGroupWithCallback(request *ListUsersOfSkillGroupRequest, callback func(response *ListUsersOfSkillGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListUsersOfSkillGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.ListUsersOfSkillGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ListUsersOfSkillGroupRequest struct {
+	*requests.RpcRequest
+	InstanceId   string `position:"Query" name:"InstanceId"`
+	SkillGroupId string `position:"Query" name:"SkillGroupId"`
+	PageSize     string `position:"Query" name:"PageSize"`
+	PageNumber   string `position:"Query" name:"PageNumber"`
+	AccessKeyId  string `position:"Query" name:"AccessKeyId"`
+}
+
+type ListUsersOfSkillGroupResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	Users          struct {
+		TotalCount int `json:"TotalCount"`
+		PageNumber int `json:"PageNumber"`
+		PageSize   int `json:"PageSize"`
+		List       []struct {
+			UserId     string `json:"UserId"`
+			RamId      string `json:"RamId"`
+			InstanceId string `json:"InstanceId"`
+			Detail     struct {
+				LoginName   string `json:"LoginName"`
+				DisplayName string `json:"DisplayName"`
+				Phone       string `json:"Phone"`
+				Email       string `json:"Email"`
+				Department  string `json:"Department"`
+			} `json:"Detail"`
+			Roles []struct {
+				RoleId          string `json:"RoleId"`
+				InstanceId      string `json:"InstanceId"`
+				RoleName        string `json:"RoleName"`
+				RoleDescription string `json:"RoleDescription"`
+				UserCount       int    `json:"UserCount"`
+				Privileges      []struct {
+					PrivilegeId          string `json:"PrivilegeId"`
+					PrivilegeName        string `json:"PrivilegeName"`
+					PrivilegeDescription string `json:"PrivilegeDescription"`
+				} `json:"Privileges"`
+			} `json:"Roles"`
+			SkillLevels []struct {
+				SkillLevelId string `json:"SkillLevelId"`
+				Level        int    `json:"Level"`
+				Skill        struct {
+					SkillGroupId          string `json:"SkillGroupId"`
+					InstanceId            string `json:"InstanceId"`
+					SkillGroupName        string `json:"SkillGroupName"`
+					SkillGroupDescription string `json:"SkillGroupDescription"`
+				} `json:"Skill"`
+			} `json:"SkillLevels"`
+		} `json:"List"`
+	} `json:"Users"`
+}
+
+func CreateListUsersOfSkillGroupRequest() (request *ListUsersOfSkillGroupRequest) {
+	request = &ListUsersOfSkillGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ListUsersOfSkillGroup", "", "")
+	return
+}
+
+func CreateListUsersOfSkillGroupResponse() (response *ListUsersOfSkillGroupResponse) {
+	response = &ListUsersOfSkillGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/ccc/modify_phone_number.go

@@ -0,0 +1,114 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ModifyPhoneNumber(request *ModifyPhoneNumberRequest) (response *ModifyPhoneNumberResponse, err error) {
+	response = CreateModifyPhoneNumberResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ModifyPhoneNumberWithChan(request *ModifyPhoneNumberRequest) (<-chan *ModifyPhoneNumberResponse, <-chan error) {
+	responseChan := make(chan *ModifyPhoneNumberResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyPhoneNumber(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ModifyPhoneNumberWithCallback(request *ModifyPhoneNumberRequest, callback func(response *ModifyPhoneNumberResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyPhoneNumberResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyPhoneNumber(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ModifyPhoneNumberRequest struct {
+	*requests.RpcRequest
+	ContactFlowId string `position:"Query" name:"ContactFlowId"`
+	InstanceId    string `position:"Query" name:"InstanceId"`
+	PhoneNumberId string `position:"Query" name:"PhoneNumberId"`
+	Usage         string `position:"Query" name:"Usage"`
+	AccessKeyId   string `position:"Query" name:"AccessKeyId"`
+}
+
+type ModifyPhoneNumberResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	PhoneNumber    struct {
+		PhoneNumberId          string `json:"PhoneNumberId"`
+		InstanceId             string `json:"InstanceId"`
+		Number                 string `json:"Number"`
+		PhoneNumberDescription string `json:"PhoneNumberDescription"`
+		TestOnly               bool   `json:"TestOnly"`
+		RemainingTime          int    `json:"RemainingTime"`
+		AllowOutbound          bool   `json:"AllowOutbound"`
+		Usage                  string `json:"Usage"`
+		Trunks                 int    `json:"Trunks"`
+		ContactFlow            struct {
+			ContactFlowId          string `json:"ContactFlowId"`
+			InstanceId             string `json:"InstanceId"`
+			ContactFlowName        string `json:"ContactFlowName"`
+			ContactFlowDescription string `json:"ContactFlowDescription"`
+			Type                   string `json:"Type"`
+		} `json:"ContactFlow"`
+	} `json:"PhoneNumber"`
+}
+
+func CreateModifyPhoneNumberRequest() (request *ModifyPhoneNumberRequest) {
+	request = &ModifyPhoneNumberRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ModifyPhoneNumber", "", "")
+	return
+}
+
+func CreateModifyPhoneNumberResponse() (response *ModifyPhoneNumberResponse) {
+	response = &ModifyPhoneNumberResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 99 - 0
services/ccc/modify_skill_group.go

@@ -0,0 +1,99 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ModifySkillGroup(request *ModifySkillGroupRequest) (response *ModifySkillGroupResponse, err error) {
+	response = CreateModifySkillGroupResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ModifySkillGroupWithChan(request *ModifySkillGroupRequest) (<-chan *ModifySkillGroupResponse, <-chan error) {
+	responseChan := make(chan *ModifySkillGroupResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifySkillGroup(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ModifySkillGroupWithCallback(request *ModifySkillGroupRequest, callback func(response *ModifySkillGroupResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifySkillGroupResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifySkillGroup(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ModifySkillGroupRequest struct {
+	*requests.RpcRequest
+	SkillLevel            *[]string `position:"Query" name:"SkillLevel"  type:"Repeated"`
+	InstanceId            string    `position:"Query" name:"InstanceId"`
+	OutboundPhoneNumberId *[]string `position:"Query" name:"OutboundPhoneNumberId"  type:"Repeated"`
+	SkillGroupId          string    `position:"Query" name:"SkillGroupId"`
+	Name                  string    `position:"Query" name:"Name"`
+	Description           string    `position:"Query" name:"Description"`
+	UserId                *[]string `position:"Query" name:"UserId"  type:"Repeated"`
+	AccessKeyId           string    `position:"Query" name:"AccessKeyId"`
+}
+
+type ModifySkillGroupResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+}
+
+func CreateModifySkillGroupRequest() (request *ModifySkillGroupRequest) {
+	request = &ModifySkillGroupRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ModifySkillGroup", "", "")
+	return
+}
+
+func CreateModifySkillGroupResponse() (response *ModifySkillGroupResponse) {
+	response = &ModifySkillGroupResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 100 - 0
services/ccc/modify_user.go

@@ -0,0 +1,100 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) ModifyUser(request *ModifyUserRequest) (response *ModifyUserResponse, err error) {
+	response = CreateModifyUserResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) ModifyUserWithChan(request *ModifyUserRequest) (<-chan *ModifyUserResponse, <-chan error) {
+	responseChan := make(chan *ModifyUserResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ModifyUser(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) ModifyUserWithCallback(request *ModifyUserRequest, callback func(response *ModifyUserResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ModifyUserResponse
+		var err error
+		defer close(result)
+		response, err = client.ModifyUser(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type ModifyUserRequest struct {
+	*requests.RpcRequest
+	SkillLevel   *[]string `position:"Query" name:"SkillLevel"  type:"Repeated"`
+	InstanceId   string    `position:"Query" name:"InstanceId"`
+	Phone        string    `position:"Query" name:"Phone"`
+	RoleId       *[]string `position:"Query" name:"RoleId"  type:"Repeated"`
+	DisplayName  string    `position:"Query" name:"DisplayName"`
+	SkillGroupId *[]string `position:"Query" name:"SkillGroupId"  type:"Repeated"`
+	UserId       string    `position:"Query" name:"UserId"`
+	Email        string    `position:"Query" name:"Email"`
+	AccessKeyId  string    `position:"Query" name:"AccessKeyId"`
+}
+
+type ModifyUserResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+}
+
+func CreateModifyUserRequest() (request *ModifyUserRequest) {
+	request = &ModifyUserRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "ModifyUser", "", "")
+	return
+}
+
+func CreateModifyUserResponse() (response *ModifyUserResponse) {
+	response = &ModifyUserResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 97 - 0
services/ccc/refresh_token.go

@@ -0,0 +1,97 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) RefreshToken(request *RefreshTokenRequest) (response *RefreshTokenResponse, err error) {
+	response = CreateRefreshTokenResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RefreshTokenWithChan(request *RefreshTokenRequest) (<-chan *RefreshTokenResponse, <-chan error) {
+	responseChan := make(chan *RefreshTokenResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RefreshToken(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RefreshTokenWithCallback(request *RefreshTokenRequest, callback func(response *RefreshTokenResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RefreshTokenResponse
+		var err error
+		defer close(result)
+		response, err = client.RefreshToken(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RefreshTokenRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type RefreshTokenResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	Token          struct {
+		Signature string `json:"Signature"`
+		SignData  string `json:"SignData"`
+	} `json:"Token"`
+}
+
+func CreateRefreshTokenRequest() (request *RefreshTokenRequest) {
+	request = &RefreshTokenRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "RefreshToken", "", "")
+	return
+}
+
+func CreateRefreshTokenResponse() (response *RefreshTokenResponse) {
+	response = &RefreshTokenResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/ccc/remove_phone_number.go

@@ -0,0 +1,94 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) RemovePhoneNumber(request *RemovePhoneNumberRequest) (response *RemovePhoneNumberResponse, err error) {
+	response = CreateRemovePhoneNumberResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RemovePhoneNumberWithChan(request *RemovePhoneNumberRequest) (<-chan *RemovePhoneNumberResponse, <-chan error) {
+	responseChan := make(chan *RemovePhoneNumberResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RemovePhoneNumber(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RemovePhoneNumberWithCallback(request *RemovePhoneNumberRequest, callback func(response *RemovePhoneNumberResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RemovePhoneNumberResponse
+		var err error
+		defer close(result)
+		response, err = client.RemovePhoneNumber(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RemovePhoneNumberRequest struct {
+	*requests.RpcRequest
+	InstanceId    string `position:"Query" name:"InstanceId"`
+	PhoneNumberId string `position:"Query" name:"PhoneNumberId"`
+	AccessKeyId   string `position:"Query" name:"AccessKeyId"`
+}
+
+type RemovePhoneNumberResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+}
+
+func CreateRemovePhoneNumberRequest() (request *RemovePhoneNumberRequest) {
+	request = &RemovePhoneNumberRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "RemovePhoneNumber", "", "")
+	return
+}
+
+func CreateRemovePhoneNumberResponse() (response *RemovePhoneNumberResponse) {
+	response = &RemovePhoneNumberResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 94 - 0
services/ccc/remove_users.go

@@ -0,0 +1,94 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) RemoveUsers(request *RemoveUsersRequest) (response *RemoveUsersResponse, err error) {
+	response = CreateRemoveUsersResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RemoveUsersWithChan(request *RemoveUsersRequest) (<-chan *RemoveUsersResponse, <-chan error) {
+	responseChan := make(chan *RemoveUsersResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RemoveUsers(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RemoveUsersWithCallback(request *RemoveUsersRequest, callback func(response *RemoveUsersResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RemoveUsersResponse
+		var err error
+		defer close(result)
+		response, err = client.RemoveUsers(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RemoveUsersRequest struct {
+	*requests.RpcRequest
+	InstanceId  string    `position:"Query" name:"InstanceId"`
+	UserId      *[]string `position:"Query" name:"UserId"  type:"Repeated"`
+	AccessKeyId string    `position:"Query" name:"AccessKeyId"`
+}
+
+type RemoveUsersResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+}
+
+func CreateRemoveUsersRequest() (request *RemoveUsersRequest) {
+	request = &RemoveUsersRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "RemoveUsers", "", "")
+	return
+}
+
+func CreateRemoveUsersResponse() (response *RemoveUsersResponse) {
+	response = &RemoveUsersResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 104 - 0
services/ccc/request_login_info.go

@@ -0,0 +1,104 @@
+package ccc
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+func (client *Client) RequestLoginInfo(request *RequestLoginInfoRequest) (response *RequestLoginInfoResponse, err error) {
+	response = CreateRequestLoginInfoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+func (client *Client) RequestLoginInfoWithChan(request *RequestLoginInfoRequest) (<-chan *RequestLoginInfoResponse, <-chan error) {
+	responseChan := make(chan *RequestLoginInfoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.RequestLoginInfo(request)
+		responseChan <- response
+		errChan <- err
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+func (client *Client) RequestLoginInfoWithCallback(request *RequestLoginInfoRequest, callback func(response *RequestLoginInfoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *RequestLoginInfoResponse
+		var err error
+		defer close(result)
+		response, err = client.RequestLoginInfo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+type RequestLoginInfoRequest struct {
+	*requests.RpcRequest
+	InstanceId  string `position:"Query" name:"InstanceId"`
+	AccessKeyId string `position:"Query" name:"AccessKeyId"`
+}
+
+type RequestLoginInfoResponse struct {
+	*responses.BaseResponse
+	RequestId      string `json:"RequestId"`
+	Success        bool   `json:"Success"`
+	Code           string `json:"Code"`
+	Message        string `json:"Message"`
+	HttpStatusCode int    `json:"HttpStatusCode"`
+	LoginInfo      struct {
+		UserName       string `json:"UserName"`
+		DisplayName    string `json:"DisplayName"`
+		Region         string `json:"Region"`
+		WebRtcUrl      string `json:"WebRtcUrl"`
+		AgentServerUrl string `json:"AgentServerUrl"`
+		Extension      string `json:"Extension"`
+		TenantId       string `json:"TenantId"`
+		Signature      string `json:"Signature"`
+		SignData       string `json:"SignData"`
+	} `json:"LoginInfo"`
+}
+
+func CreateRequestLoginInfoRequest() (request *RequestLoginInfoRequest) {
+	request = &RequestLoginInfoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("CCC", "2017-07-05", "RequestLoginInfo", "", "")
+	return
+}
+
+func CreateRequestLoginInfoResponse() (response *RequestLoginInfoResponse) {
+	response = &RequestLoginInfoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}