class_docstr: Send message using a DingTalk Custom Robot API.
  
  .. seealso::
      `How to get webhook token <https://open.dingtalk.com/document/robots/custom-robot-access>`__
  
  :param dingding_conn_id: Dingding connection id that has access token in the password field,
      and optional host name in host field, if host not set than default
      ``https://oapi.dingtalk.com`` will use.
  :param message_type: Message type you want to send to Dingding, support five type so far
      including ``text``, ``link``, ``markdown``, ``actionCard``, ``feedCard``.
  :param message: The message send to chat group
  :param at_mobiles: Remind specific users with this message
  :param at_all: Remind all people in group or not. If True, will overwrite ``at_mobiles``
class_docstr_tok: ["Send","message","using","a","DingTalk","Custom","Robot","API",".","..","seealso",":",":","`","How","to","get","webhook","token","<","https",":","\/\/open.dingtalk.com\/document\/robots\/custom-robot-access",">","`","__",":","param","dingding_conn_id",":","Dingding","connection","id","that","has","access","token","in","the","password","field",",","and","optional","host","name","in","host","field",",","if","host","not","set","than","default","``","https",":","\/\/oapi.dingtalk.com","``","will","use",".",":","param","message_type",":","Message","type","you","want","to","send","to","Dingding",",","support","five","type","so","far","including","``","text","``",",","``","link","``",",","``","markdown","``",",","``","actionCard","``",",","``","feedCard","``",".",":","param","message",":","The","message","send","to","chat","group",":","param","at_mobiles",":","Remind","specific","users","with","this","message",":","param","at_all",":","Remind","all","people","in","group","or","not",".","If","True",",","will","overwrite","``","at_mobiles","``"]
docstr: Send DingTalk Custom Robot message.
docstr_tok: ["Send","DingTalk","Custom","Robot","message","."]
code: def send(self) -> None:
      """Send DingTalk Custom Robot message."""
      support_type = [
          "text",
          "link",
          "markdown",
          "actionCard",
          "feedCard",
      ]
      if self.message_type not in support_type:
          raise ValueError(
              f"DingdingWebhookHook only support {support_type} so far, but receive {self.message_type}"
          )
  
      data = self._build_message()
      self.log.info(
          "Sending Dingding type %s message %s", self.message_type, data
      )
      resp = self.run(
          endpoint=self._get_endpoint(),
          data=data,
          headers={"Content-Type": "application/json"},
      )
  
      # Success send message will return errcode = 0
      if int(resp.json().get("errcode")) != 0:
          raise AirflowException(
              f"Send Dingding message failed, receive error message {resp.text}"
          )
      self.log.info("Success Send Dingding message")
  
file_path: airflow/airflow/providers/dingding/hooks/dingding.py
imports: from __future__ import annotations
  import json
  import requests
  from requests import Session
  from airflow.exceptions import AirflowException
  from airflow.providers.http.hooks.http import HttpHook
label_desc: Use image node_id 5 for calling the DingdingHook obj's underlying member method code with example usage: obj.send() without return types