最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用飛書發(fā)送消息的示例

 更新時間:2020年11月10日 08:36:32   作者:江楓對愁眠  
這篇文章主要介紹了Python調(diào)用飛書發(fā)送消息的示例,幫助大家更好的理解和學(xué)習(xí)python編程語言的用法,感興趣的朋友可以了解下

一、創(chuàng)建飛書機(jī)器人  

  自定義飛書機(jī)器人操作步驟,具體詳見飛書官方文檔:《機(jī)器人 | 如何在群聊中使用機(jī)器人?》

二、調(diào)用飛書發(fā)送消息

  自定義機(jī)器人添加完成后,就能向其 webhook 地址發(fā)送 POST 請求,從而在群聊中推送消息了。支持推送的消息格式有文本、富文本、圖片消息,也可以分享群名片等。

  參數(shù)msg_type代表消息類型,可傳入:text(文本)/ post(富文本)/ image(圖片)/ share_chat(分享群名片)/ interactive(消息卡片),可參照飛書接口文檔:https://open.feishu.cn/document/ukTMukTMukTM/uUjNz4SN2MjL1YzM
發(fā)送文本消息
  請求的消息體示例:

{
"open_id":"ou_5ad573a6411d72b8305fda3a9c15c70e",
"root_id":"om_40eb06e7b84dc71c03e009ad3c754195",
"chat_id":"oc_5ad11d72b830411d72b836c20",
"user_id": "92e39a99",
"email":"fanlv@gmail.com",
"msg_type":"text",
"content":{
"text":"text content<at user_id=\"ou_88a56e7e8e9f680b682f6905cc09098e\">test</at>"
}
}

Curl 請求 Demo

curl -X POST \
 https://open.feishu.cn/open-apis/message/v4/send/ \
 -H 'Authorization: Bearer t-fee42159a366c575f2cd2b2acde2ed1e94c89d5f' \
 -H 'Content-Type: application/json' \
 -d '{
  "chat_id": "oc_f5b1a7eb27ae2c7b6adc2a74faf339ff",
  "msg_type": "text",
  "content": {
    "text": "text content<at user_id=\"ou_88a56e7e8e9f680b682f6905cc09098e\">test</at>"
  }
}'

使用Python封裝飛書請求

接下來我們以發(fā)送文本格式消息類型,進(jìn)行以下封裝,上代碼:

# -*- coding:utf-8 -*-
'''
@File   :  feiShuTalk.py 
@Time   :  2020/11/9 11:45  
@Author  :  DY
@Version  :  V1.0.0
@Desciption: 
'''

import requests
import json
import logging
import time
import urllib
import urllib3
urllib3.disable_warnings()


try:
  JSONDecodeError = json.decoder.JSONDecodeError
except AttributeError:
  JSONDecodeError = ValueError


def is_not_null_and_blank_str(content):
  """
  非空字符串
  :param content: 字符串
  :return: 非空 - True,空 - False
  """
  if content and content.strip():
    return True
  else:
    return False


class FeiShutalkChatbot(object):

  def __init__(self, webhook, secret=None, pc_slide=False, fail_notice=False):
    '''
    機(jī)器人初始化
    :param webhook: 飛書群自定義機(jī)器人webhook地址
    :param secret: 機(jī)器人安全設(shè)置頁面勾選“加簽”時需要傳入的密鑰
    :param pc_slide: 消息鏈接打開方式,默認(rèn)False為瀏覽器打開,設(shè)置為True時為PC端側(cè)邊欄打開
    :param fail_notice: 消息發(fā)送失敗提醒,默認(rèn)為False不提醒,開發(fā)者可以根據(jù)返回的消息發(fā)送結(jié)果自行判斷和處理
    '''
    super(FeiShutalkChatbot, self).__init__()
    self.headers = {'Content-Type': 'application/json; charset=utf-8'}
    self.webhook = webhook
    self.secret = secret
    self.pc_slide = pc_slide
    self.fail_notice = fail_notice

  def send_text(self, msg, open_id=[]):
    """
    消息類型為text類型
    :param msg: 消息內(nèi)容
    :return: 返回消息發(fā)送結(jié)果
    """
    data = {"msg_type": "text", "at": {}}
    if is_not_null_and_blank_str(msg):  # 傳入msg非空
      data["content"] = {"text": msg}
    else:
      logging.error("text類型,消息內(nèi)容不能為空!")
      raise ValueError("text類型,消息內(nèi)容不能為空!")

    logging.debug('text類型:%s' % data)
    return self.post(data)

  def post(self, data):
    """
    發(fā)送消息(內(nèi)容UTF-8編碼)
    :param data: 消息數(shù)據(jù)(字典)
    :return: 返回消息發(fā)送結(jié)果
    """
    try:
      post_data = json.dumps(data)
      response = requests.post(self.webhook, headers=self.headers, data=post_data, verify=False)
    except requests.exceptions.HTTPError as exc:
      logging.error("消息發(fā)送失敗, HTTP error: %d, reason: %s" % (exc.response.status_code, exc.response.reason))
      raise
    except requests.exceptions.ConnectionError:
      logging.error("消息發(fā)送失敗,HTTP connection error!")
      raise
    except requests.exceptions.Timeout:
      logging.error("消息發(fā)送失敗,Timeout error!")
      raise
    except requests.exceptions.RequestException:
      logging.error("消息發(fā)送失敗, Request Exception!")
      raise
    else:
      try:
        result = response.json()
      except JSONDecodeError:
        logging.error("服務(wù)器響應(yīng)異常,狀態(tài)碼:%s,響應(yīng)內(nèi)容:%s" % (response.status_code, response.text))
        return {'errcode': 500, 'errmsg': '服務(wù)器響應(yīng)異常'}
      else:
        logging.debug('發(fā)送結(jié)果:%s' % result)
        # 消息發(fā)送失敗提醒(errcode 不為 0,表示消息發(fā)送異常),默認(rèn)不提醒,開發(fā)者可以根據(jù)返回的消息發(fā)送結(jié)果自行判斷和處理
        if self.fail_notice and result.get('errcode', True):
          time_now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
          error_data = {
            "msgtype": "text",
            "text": {
              "content": "[注意-自動通知]飛書機(jī)器人消息發(fā)送失敗,時間:%s,原因:%s,請及時跟進(jìn),謝謝!" % (
                time_now, result['errmsg'] if result.get('errmsg', False) else '未知異常')
            },
            "at": {
              "isAtAll": False
            }
          }
          logging.error("消息發(fā)送失敗,自動通知:%s" % error_data)
          requests.post(self.webhook, headers=self.headers, data=json.dumps(error_data))
        return result

  封裝后我們就可以直接調(diào)用封裝的類,進(jìn)行消息代碼發(fā)送;執(zhí)行以下代碼后,就可以使用飛書發(fā)送消息咯,是不是很簡單。

  webhook = "https://open.feishu.cn/open-apis/bot/v2/hook/1d7b5d0c-03a5-44a9-8d7a-4d09b24bfea1"
  feishu = FeiShutalkChatbot(webhook)
  feishu.send_text("重慶百貨-新世紀(jì)魚胡路店內(nèi)商品'1000800370-牛心白 約1kg'在商詳[8]和榜單[7]中排名不一致")

以上就是Python調(diào)用飛書發(fā)送消息的示例的詳細(xì)內(nèi)容,更多關(guān)于python 飛書發(fā)送信息的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python?一篇文章看懂Python集合與字典數(shù)據(jù)類型

    Python?一篇文章看懂Python集合與字典數(shù)據(jù)類型

    集合并不是一種數(shù)據(jù)處理類型,而是一種中間類型。集合(set)是一個無序、不重復(fù)的元素序列,經(jīng)常被用來處理兩個列表進(jìn)行交并差的處理性。本文將詳細(xì)講解集合的一些常用方法,感興趣的可以了解一下
    2022-03-03
  • Python中捕獲鍵盤的方式詳解

    Python中捕獲鍵盤的方式詳解

    這篇文章主要介紹了Python中捕獲鍵盤的方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python polars數(shù)據(jù)科學(xué)庫對比Pandas優(yōu)勢分析

    python polars數(shù)據(jù)科學(xué)庫對比Pandas優(yōu)勢分析

    這篇文章主要為大家介紹了python polars數(shù)據(jù)科學(xué)庫對比Pandas優(yōu)勢分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • python 使用while寫猜年齡小游戲過程解析

    python 使用while寫猜年齡小游戲過程解析

    這篇文章主要介紹了python 使用while寫猜年齡小游戲過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Pytorch學(xué)習(xí)之torch用法----比較操作(Comparison Ops)

    Pytorch學(xué)習(xí)之torch用法----比較操作(Comparison Ops)

    這篇文章主要介紹了Pytorch學(xué)習(xí)之torch用法----比較操作(Comparison Ops),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Pytorch 實(shí)現(xiàn)權(quán)重初始化

    Pytorch 實(shí)現(xiàn)權(quán)重初始化

    今天小編就為大家分享一篇Pytorch 實(shí)現(xiàn)權(quán)重初始化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python實(shí)現(xiàn)PDF文字識別提取并寫入CSV文件

    Python實(shí)現(xiàn)PDF文字識別提取并寫入CSV文件

    這篇文章主要是和大家分享一個Python實(shí)現(xiàn)PDF文字識別與提取并寫入?CSV文件的腳本。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-03-03
  • Python函數(shù)isalnum用法示例小結(jié)

    Python函數(shù)isalnum用法示例小結(jié)

    isalnum()函數(shù)是Python中的一個內(nèi)置函數(shù),用于判斷字符串是否只由數(shù)字和字母組成,其內(nèi)部實(shí)現(xiàn)原理比較簡單,只需遍歷字符串中的每一個字符即可,這篇文章主要介紹了Python函數(shù)isalnum用法介紹,需要的朋友可以參考下
    2024-01-01
  • python??Matplotlib繪圖直線,折線,曲線

    python??Matplotlib繪圖直線,折線,曲線

    這篇文章主要介紹了python??Matplotlib繪圖直線,折線,曲線,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python3.9.1環(huán)境安裝的方法(圖文)

    python3.9.1環(huán)境安裝的方法(圖文)

    這篇文章主要介紹了python3.9.1環(huán)境安裝的方法(圖文),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評論

商丘市| 双峰县| 尚志市| 和田县| 合山市| 阿拉尔市| 盱眙县| 上犹县| 临沭县| 宣汉县| 广西| 邹平县| 怀集县| 邵东县| 南木林县| 巴青县| 长宁县| 兴文县| 萍乡市| 大同市| 体育| 澄城县| 迭部县| 广汉市| 乳山市| 吉水县| 鄂托克旗| 黄龙县| 黄冈市| 福州市| 高雄市| 新津县| 朝阳县| 六盘水市| 惠安县| 班玛县| 镇原县| 喀什市| 嘉祥县| 宣威市| 稷山县|