create method
Creates a message in a Google Chat space.
For an example, see
Send a message.
The create()
method requires either
user authentication
or
app authentication.
Chat attributes the message sender differently depending on the type of
authentication that you use in your request. The following image shows how
Chat attributes a message when you use app authentication. Chat displays
the Chat app as the message sender. The content of the message can contain
text (text
), cards (cardsV2
), and accessory widgets
(accessoryWidgets
).
The following image shows how Chat attributes a message when you use user
authentication. Chat displays the user as the message sender and
attributes the Chat app to the message by displaying its name. The content
of message can only contain text (
text
).
The maximum message size, including the message contents, is 32,000 bytes.
For
webhook
requests, the response doesn't contain the full message. The response only
populates the
name
and thread.name
fields in addition to the
information that was in the request.
request
- The metadata request object.
Request parameters:
parent
- Required. The resource name of the space in which to create a
message. Format: spaces/{space}
Value must have pattern ^spaces/\[^/\]+$
.
messageId
- Optional. A custom ID for a message. Lets Chat apps get,
update, or delete a message without needing to store the system-assigned
ID in the message's resource name (represented in the message name
field). The value for this field must meet the following requirements: *
Begins with client-
. For example, client-custom-name
is a valid custom
ID, but custom-name
is not. * Contains up to 63 characters and only
lowercase letters, numbers, and hyphens. * Is unique within a space. A
Chat app can't use the same custom ID for different messages. For details,
see
Name a message.
messageReplyOption
- Optional. Specifies whether a message starts a
thread or replies to one. Only supported in named spaces. When
responding to user interactions,
this field is ignored. For interactions within a thread, the reply is
created in the same thread. Otherwise, the reply is created as a new
thread.
Possible string values are:
- "MESSAGE_REPLY_OPTION_UNSPECIFIED" : Default. Starts a new thread. Using
this option ignores any thread ID or
thread_key
that's included. - "REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD" : Creates the message as a reply
to the thread specified by thread ID or
thread_key
. If it fails, the message starts a new thread instead. - "REPLY_MESSAGE_OR_FAIL" : Creates the message as a reply to the thread
specified by thread ID or
thread_key
. If a newthread_key
is used, a new thread is created. If the message creation fails, aNOT_FOUND
error is returned instead.
requestId
- Optional. A unique request ID for this message. Specifying
an existing request ID returns the message created with that ID instead of
creating a new message.
threadKey
- Optional. Deprecated: Use thread.thread_key instead. ID for
the thread. Supports up to 4000 characters. To start or add to a thread,
create a message and specify a threadKey
or the thread.name. For example
usage, see
Start or reply to a message thread.
$fields
- Selector specifying which fields to include in a partial
response.
Completes with a Message.
Completes with a commons.ApiRequestError if the API endpoint returned an error.
If the used http.Client
completes with an error when making a REST call,
this method will complete with the same error.
Implementation
async.Future<Message> create(
Message request,
core.String parent, {
core.String? messageId,
core.String? messageReplyOption,
core.String? requestId,
core.String? threadKey,
core.String? $fields,
}) async {
final body_ = convert.json.encode(request);
final queryParams_ = <core.String, core.List<core.String>>{
if (messageId != null) 'messageId': [messageId],
if (messageReplyOption != null)
'messageReplyOption': [messageReplyOption],
if (requestId != null) 'requestId': [requestId],
if (threadKey != null) 'threadKey': [threadKey],
if ($fields != null) 'fields': [$fields],
};
final url_ = 'v1/' + core.Uri.encodeFull('$parent') + '/messages';
final response_ = await _requester.request(
url_,
'POST',
body: body_,
queryParams: queryParams_,
);
return Message.fromJson(response_ as core.Map<core.String, core.dynamic>);
}