52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
# 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
|