# -*- coding: utf8 -*-
# Copyright (c) 2017-2021 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# 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.

import json

from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.common.abstract_client import AbstractClient
from tencentcloud.tci.v20190318 import models


class TciClient(AbstractClient):
    _apiVersion = '2019-03-18'
    _endpoint = 'tci.tencentcloudapi.com'
    _service = 'tci'


    def AIAssistant(self, request):
        """提供 AI 助教基础版本功能接口

        :param request: Request instance for AIAssistant.
        :type request: :class:`tencentcloud.tci.v20190318.models.AIAssistantRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.AIAssistantResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("AIAssistant", params, headers=headers)
            response = json.loads(body)
            model = models.AIAssistantResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CancelTask(self, request):
        """用于取消已经提交的任务，目前只支持图像任务。

        :param request: Request instance for CancelTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.CancelTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CancelTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CancelTask", params, headers=headers)
            response = json.loads(body)
            model = models.CancelTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CheckFacePhoto(self, request):
        """检查人脸图片是否合法

        :param request: Request instance for CheckFacePhoto.
        :type request: :class:`tencentcloud.tci.v20190318.models.CheckFacePhotoRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CheckFacePhotoResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CheckFacePhoto", params, headers=headers)
            response = json.loads(body)
            model = models.CheckFacePhotoResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CreateFace(self, request):
        """创建人脸

        :param request: Request instance for CreateFace.
        :type request: :class:`tencentcloud.tci.v20190318.models.CreateFaceRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CreateFaceResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CreateFace", params, headers=headers)
            response = json.loads(body)
            model = models.CreateFaceResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CreateLibrary(self, request):
        """创建人员库

        :param request: Request instance for CreateLibrary.
        :type request: :class:`tencentcloud.tci.v20190318.models.CreateLibraryRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CreateLibraryResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CreateLibrary", params, headers=headers)
            response = json.loads(body)
            model = models.CreateLibraryResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CreatePerson(self, request):
        """创建人员

        :param request: Request instance for CreatePerson.
        :type request: :class:`tencentcloud.tci.v20190318.models.CreatePersonRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CreatePersonResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CreatePerson", params, headers=headers)
            response = json.loads(body)
            model = models.CreatePersonResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CreateVocab(self, request):
        """创建词汇

        :param request: Request instance for CreateVocab.
        :type request: :class:`tencentcloud.tci.v20190318.models.CreateVocabRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CreateVocabResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CreateVocab", params, headers=headers)
            response = json.loads(body)
            model = models.CreateVocabResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def CreateVocabLib(self, request):
        """建立词汇库

        :param request: Request instance for CreateVocabLib.
        :type request: :class:`tencentcloud.tci.v20190318.models.CreateVocabLibRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.CreateVocabLibResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("CreateVocabLib", params, headers=headers)
            response = json.loads(body)
            model = models.CreateVocabLibResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DeleteFace(self, request):
        """删除人脸

        :param request: Request instance for DeleteFace.
        :type request: :class:`tencentcloud.tci.v20190318.models.DeleteFaceRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DeleteFaceResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DeleteFace", params, headers=headers)
            response = json.loads(body)
            model = models.DeleteFaceResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DeleteLibrary(self, request):
        """删除人员库

        :param request: Request instance for DeleteLibrary.
        :type request: :class:`tencentcloud.tci.v20190318.models.DeleteLibraryRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DeleteLibraryResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DeleteLibrary", params, headers=headers)
            response = json.loads(body)
            model = models.DeleteLibraryResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DeletePerson(self, request):
        """删除人员

        :param request: Request instance for DeletePerson.
        :type request: :class:`tencentcloud.tci.v20190318.models.DeletePersonRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DeletePersonResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DeletePerson", params, headers=headers)
            response = json.loads(body)
            model = models.DeletePersonResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DeleteVocab(self, request):
        """删除词汇

        :param request: Request instance for DeleteVocab.
        :type request: :class:`tencentcloud.tci.v20190318.models.DeleteVocabRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DeleteVocabResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DeleteVocab", params, headers=headers)
            response = json.loads(body)
            model = models.DeleteVocabResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DeleteVocabLib(self, request):
        """删除词汇库

        :param request: Request instance for DeleteVocabLib.
        :type request: :class:`tencentcloud.tci.v20190318.models.DeleteVocabLibRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DeleteVocabLibResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DeleteVocabLib", params, headers=headers)
            response = json.loads(body)
            model = models.DeleteVocabLibResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeAITaskResult(self, request):
        """获取标准化接口任务结果

        :param request: Request instance for DescribeAITaskResult.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeAITaskResultRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeAITaskResultResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeAITaskResult", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeAITaskResultResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeAttendanceResult(self, request):
        """人脸考勤查询结果

        :param request: Request instance for DescribeAttendanceResult.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeAttendanceResultRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeAttendanceResultResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeAttendanceResult", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeAttendanceResultResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeAudioTask(self, request):
        """音频评估任务信息查询接口，异步查询客户提交的请求的结果。

        :param request: Request instance for DescribeAudioTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeAudioTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeAudioTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeAudioTask", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeAudioTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeConversationTask(self, request):
        """音频对话任务评估任务信息查询接口，异步查询客户提交的请求的结果。

        :param request: Request instance for DescribeConversationTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeConversationTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeConversationTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeConversationTask", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeConversationTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeHighlightResult(self, request):
        """视频精彩集锦结果查询接口，异步查询客户提交的请求的结果。

        :param request: Request instance for DescribeHighlightResult.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeHighlightResultRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeHighlightResultResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeHighlightResult", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeHighlightResultResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeImageTask(self, request):
        """拉取任务详情

        :param request: Request instance for DescribeImageTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeImageTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeImageTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeImageTask", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeImageTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeImageTaskStatistic(self, request):
        """获取图像任务统计信息

        :param request: Request instance for DescribeImageTaskStatistic.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeImageTaskStatisticRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeImageTaskStatisticResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeImageTaskStatistic", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeImageTaskStatisticResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeLibraries(self, request):
        """获取人员库列表

        :param request: Request instance for DescribeLibraries.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeLibrariesRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeLibrariesResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeLibraries", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeLibrariesResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribePerson(self, request):
        """获取人员详情

        :param request: Request instance for DescribePerson.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribePersonRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribePersonResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribePerson", params, headers=headers)
            response = json.loads(body)
            model = models.DescribePersonResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribePersons(self, request):
        """拉取人员列表

        :param request: Request instance for DescribePersons.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribePersonsRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribePersonsResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribePersons", params, headers=headers)
            response = json.loads(body)
            model = models.DescribePersonsResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeVocab(self, request):
        """查询词汇

        :param request: Request instance for DescribeVocab.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeVocabRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeVocabResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeVocab", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeVocabResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def DescribeVocabLib(self, request):
        """查询词汇库

        :param request: Request instance for DescribeVocabLib.
        :type request: :class:`tencentcloud.tci.v20190318.models.DescribeVocabLibRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.DescribeVocabLibResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("DescribeVocabLib", params, headers=headers)
            response = json.loads(body)
            model = models.DescribeVocabLibResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def ModifyLibrary(self, request):
        """修改人员库信息

        :param request: Request instance for ModifyLibrary.
        :type request: :class:`tencentcloud.tci.v20190318.models.ModifyLibraryRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.ModifyLibraryResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("ModifyLibrary", params, headers=headers)
            response = json.loads(body)
            model = models.ModifyLibraryResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def ModifyPerson(self, request):
        """修改人员信息

        :param request: Request instance for ModifyPerson.
        :type request: :class:`tencentcloud.tci.v20190318.models.ModifyPersonRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.ModifyPersonResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("ModifyPerson", params, headers=headers)
            response = json.loads(body)
            model = models.ModifyPersonResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitAudioTask(self, request):
        """音频任务提交接口

        :param request: Request instance for SubmitAudioTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitAudioTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitAudioTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitAudioTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitAudioTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitCheckAttendanceTask(self, request):
        """提交人员考勤任务，支持包括点播和直播资源；支持通过DescribeAttendanceResult查询结果，也支持通过NoticeUrl设置考勤回调结果，回调结果结构如下：
        ##### 回调事件结构
         | 参数名称 | 类型 | 描述 |
         | ----  | ---  | ------  |
         | jobid | Integer | 任务ID |
         | person_info | array of PersonInfo | 识别到的人员列表 |
        #####子结构PersonInfo
         | 参数名称 | 类型 | 描述 |
         | ----  | ---  | ------  |
         | traceid | String | 可用于区分同一路视频流下的不同陌生人 |
         | personid | String | 识别到的人员ID，如果是陌生人则返回空串 |
         | libid | String | 识别到的人员所在的库ID，如果是陌生人则返回空串 |
         | timestamp | uint64 | 识别到人脸的绝对时间戳，单位ms |
         | image_url | string | 识别到人脸的事件抓图的下载地址，不长期保存，需要请及时下载 |

        :param request: Request instance for SubmitCheckAttendanceTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitCheckAttendanceTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitCheckAttendanceTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitCheckAttendanceTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitCheckAttendanceTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitCheckAttendanceTaskPlus(self, request):
        """支持多路视频流，提交高级人员考勤任务

        :param request: Request instance for SubmitCheckAttendanceTaskPlus.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitCheckAttendanceTaskPlusRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitCheckAttendanceTaskPlusResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitCheckAttendanceTaskPlus", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitCheckAttendanceTaskPlusResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitConversationTask(self, request):
        """对话任务分析接口

        :param request: Request instance for SubmitConversationTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitConversationTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitConversationTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitConversationTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitConversationTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitDoubleVideoHighlights(self, request):
        """发起双路视频生成精彩集锦接口。该接口可以通过客户传入的学生音视频及老师视频两路Url，自动生成一堂课程的精彩集锦。需要通过DescribeHighlightResult
        接口获取生成结果。

        :param request: Request instance for SubmitDoubleVideoHighlights.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitDoubleVideoHighlightsRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitDoubleVideoHighlightsResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitDoubleVideoHighlights", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitDoubleVideoHighlightsResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitFullBodyClassTask(self, request):
        """**传统课堂授课任务**：在此场景中，老师为站立授课，有白板或投影供老师展示课程内容，摄像头可以拍摄到老师的半身或者全身。拍摄视频为一路全局画面，且背景不动，要求画面稳定清晰。通过此接口可分析老师授课的行为及语音，以支持AI评教。

        **提供的功能接口有：**老师人脸识别、老师表情识别、老师肢体动作识别、语音识别。  可分析的指标维度包括：身份识别、正脸、侧脸、人脸坐标、人脸尺寸、高兴、中性、高兴、中性、惊讶、厌恶、恐惧、愤怒、蔑视、悲伤、正面讲解、写板书、指黑板、语音转文字、发音时长、非发音时长、音量、语速、指定关键词的使用等

        **对场景的要求为：**真实场景老师1人出现在画面中，全局画面且背景不动；人脸上下角度在20度以内，左右角度在15度以内，歪头角度在15度以内；光照均匀，无遮挡，人脸清晰可见；像素最好在 100X100 像素以上，但是图像整体质量不能超过1080p。

        **结果查询方式：**图像任务直接返回结果，点播及直播任务通过DescribeAITaskResult查询结果。

        :param request: Request instance for SubmitFullBodyClassTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitFullBodyClassTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitFullBodyClassTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitFullBodyClassTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitFullBodyClassTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitHighlights(self, request):
        """发起视频生成精彩集锦接口。该接口可以通过客户传入的课程音频数据及相关策略（如微笑抽取，专注抽取等），自动生成一堂课程的精彩集锦。需要通过QueryHighlightResult接口获取生成结果。

        :param request: Request instance for SubmitHighlights.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitHighlightsRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitHighlightsResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitHighlights", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitHighlightsResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitImageTask(self, request):
        """提交图像分析任务

        :param request: Request instance for SubmitImageTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitImageTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitImageTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitImageTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitImageTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitImageTaskPlus(self, request):
        """高级图像分析任务，开放了图像任务里的所有开关，可以根据场景深度定制图像分析任务。支持的图像类别有，图片链接、图片二进制数据、点播链接和直播链接。

        :param request: Request instance for SubmitImageTaskPlus.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitImageTaskPlusRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitImageTaskPlusResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitImageTaskPlus", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitImageTaskPlusResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitOneByOneClassTask(self, request):
        """**提交在线1对1课堂任务**
        对于在线1对1课堂，老师通过视频向学生授课，并且学生人数为1人。通过上传学生端的图像信息，可以获取学生的听课情况分析。 具体指一路全局画面且背景不动，有1位学生的头像或上半身的画面，要求画面稳定清晰。

        **提供的功能接口有：**学生人脸识别、学生表情识别、语音识别。可分析的指标维度包括：学生身份识别、正脸、侧脸、抬头、低头、人脸坐标、人脸尺寸、高兴、中性、高兴、中性、惊讶、厌恶、恐惧、愤怒、蔑视、悲伤、语音转文字、发音时长、非发音时长、音量、语速等。

        **对场景的要求为：**真实常规1v1授课场景，学生2人以下，全局画面且背景不动；人脸上下角度在20度以内，左右角度在15度以内，歪头角度在15度以内；光照均匀，无遮挡，人脸清晰可见；像素最好在 100X100 像素以上，但是图像整体质量不能超过1080p。

        **结果查询方式：**图像任务直接返回结果，点播及直播任务通过DescribeAITaskResult查询结果。

        :param request: Request instance for SubmitOneByOneClassTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitOneByOneClassTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitOneByOneClassTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitOneByOneClassTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitOneByOneClassTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitOpenClassTask(self, request):
        """**提交线下小班（无课桌）课任务**
        线下小班课是指有学生无课桌的课堂，满座15人以下，全局画面且背景不动，能清晰看到。

        **提供的功能接口有：**学生人脸识别、学生表情识别、学生肢体动作识别。  可分析的指标维度包括：身份识别、正脸、侧脸、抬头、低头、高兴、中性、高兴、中性、惊讶、厌恶、恐惧、愤怒、蔑视、悲伤、站立、举手、坐着等。

        **对场景的要求为：**真实常规教室，满座15人以下，全局画面且背景不动；人脸上下角度在20度以内，左右角度在15度以内，歪头角度在15度以内；光照均匀，无遮挡，人脸清晰可见；像素最好在 100X100 像素以上但是图像整体质量不能超过1080p。

        **结果查询方式：**图像任务直接返回结果，点播及直播任务通过DescribeAITaskResult查询结果。

        :param request: Request instance for SubmitOpenClassTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitOpenClassTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitOpenClassTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitOpenClassTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitOpenClassTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitPartialBodyClassTask(self, request):
        """**在线小班课任务**：此场景是在线授课场景，老师一般为坐着授课，摄像头可以拍摄到老师的头部及上半身。拍摄视频为一路全局画面，且背景不动，要求画面稳定清晰。通过此接口可分析老师授课的行为及语音，以支持AI评教。

        **提供的功能接口有：**老师人脸识别、老师表情识别、老师手势识别、光线识别、语音识别。 可分析的指标维度包括：身份识别、正脸、侧脸、人脸坐标、人脸尺寸、高兴、中性、高兴、中性、惊讶、厌恶、恐惧、愤怒、蔑视、悲伤、点赞手势、听你说手势、听我说手势、拿教具行为、语音转文字、发音时长、非发音时长、音量、语速、指定关键词的使用等

        **对场景的要求为：**在线常规授课场景，全局画面且背景不动；人脸上下角度在20度以内，左右角度在15度以内，歪头角度在15度以内；光照均匀，无遮挡，人脸清晰可见；像素最好在 100X100 像素以上，但是图像整体质量不能超过1080p。

        **结果查询方式：**图像任务直接返回结果，点播及直播任务通过DescribeAITaskResult查询结果。

        :param request: Request instance for SubmitPartialBodyClassTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitPartialBodyClassTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitPartialBodyClassTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitPartialBodyClassTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitPartialBodyClassTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def SubmitTraditionalClassTask(self, request):
        """**提交线下传统面授大班课（含课桌）任务。**
        传统教室课堂是指有学生课堂有课桌的课堂，满座20-50人，全局画面且背景不动。

        **提供的功能接口有：**学生人脸识别、学生表情识别、学生肢体动作识别。可分析的指标维度包括：学生身份识别、正脸、侧脸、抬头、低头、高兴、中性、高兴、中性、惊讶、厌恶、恐惧、愤怒、蔑视、悲伤、举手、站立、坐着、趴桌子、玩手机等

        **对场景的要求为：**传统的学生上课教室，满座20-50人，全局画面且背景不动；人脸上下角度在20度以内，左右角度在15度以内，歪头角度在15度以内；光照均匀，无遮挡，人脸清晰可见；像素最好在 100X100 像素以上，但是图像整体质量不能超过1080p。

        **结果查询方式：**图像任务直接返回结果，点播及直播任务通过DescribeAITaskResult查询结果。


        :param request: Request instance for SubmitTraditionalClassTask.
        :type request: :class:`tencentcloud.tci.v20190318.models.SubmitTraditionalClassTaskRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.SubmitTraditionalClassTaskResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("SubmitTraditionalClassTask", params, headers=headers)
            response = json.loads(body)
            model = models.SubmitTraditionalClassTaskResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))


    def TransmitAudioStream(self, request):
        """分析音频信息

        :param request: Request instance for TransmitAudioStream.
        :type request: :class:`tencentcloud.tci.v20190318.models.TransmitAudioStreamRequest`
        :rtype: :class:`tencentcloud.tci.v20190318.models.TransmitAudioStreamResponse`

        """
        try:
            params = request._serialize()
            headers = request.headers
            body = self.call("TransmitAudioStream", params, headers=headers)
            response = json.loads(body)
            model = models.TransmitAudioStreamResponse()
            model._deserialize(response["Response"])
            return model
        except Exception as e:
            if isinstance(e, TencentCloudSDKException):
                raise
            else:
                raise TencentCloudSDKException(type(e).__name__, str(e))