ad-password-self-service/utils/feishu/api_duty.py

52 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# coding: utf-8
from __future__ import absolute_import, division, print_function, unicode_literals
import logging
from typing import TYPE_CHECKING, Tuple
import requests
if TYPE_CHECKING:
from utils.feishu.api import OpenLark
logger = logging.getLogger('feishu')
class APIDutyMixin(object):
def join_duty_room(self, duty_room_id, duty_room_token, user_id):
"""加入服务台
:type self: OpenLark
:param duty_room_id: 服务台的 id
:param duty_room_token: 服务台的 token
:param user_id: 用户 id
:return: 用户所在的服务台对话的 chat_id和带有 Lark 协议的跳转 URI
:rtype: Tuple[str, str]
跳转入用户专属的飞书中值班号客服群中
需要服务台的管理员联系 @杨帆 获取接入服务台 duty_room_token 和服务台 duty_room_id
https://bytedance.feishu.cn/space/doc/YlsR7QzmqM0gg6wbwpY4la
"""
url = 'https://api.zjurl.cn/saipan/api/chat/to_chat'
r = requests.post(url, json={
'duty_room_id': duty_room_id,
'token': duty_room_token,
'user_id': user_id,
})
logger.debug('[join_duty_room] duty_room_id=%s, user_id=%s, status_code=%d, resp=%s', duty_room_id, user_id,
r.status_code, r.text)
try:
r.raise_for_status()
data = r.json()
chat_id = data['data']['chat_id']
lark_client_uri = 'lark://client/chat/{}'.format(chat_id)
return chat_id, lark_client_uri
except Exception as e:
logger.error('[join_duty_room] duty_room_id=%s, user_id=%s, status_code=%d, resp=%s, err=%s', duty_room_id,
user_id, r.status_code, r.text, e)
raise