docs: public SendMessageResponse sendMessage(SendMessageRequest request) {
          checkNotNull(request, "object request should not be null.");
          assertStringNotNullOrEmpty(request.getTemplateId(),
                  "string templateId of request should not be null or empty.");
          assertListNotNullOrEmpty(request.getReceiver(), "list receiver of request should not be null or empty.");
          // allow params is empty
          //  assertStringNotNullOrEmpty(request.getContentVar(), "contentVar should not be null or empty.");
  
          // validate the receiver
          for (String receiver : request.getReceiver()) {
              assertStringNotNullOrEmpty(receiver, "receiver should not be null or empty.");
          }
  
          InternalRequest internalRequest = this.createRequest("message", request, HttpMethodName.POST);
  
          // fill in the request payload
          internalRequest = fillRequestPayload(internalRequest, JsonUtils.toJsonString(request));
  
          return this.invokeHttpClient(internalRequest, SendMessageResponse.class);
      }