Создать новую тему в чате Google - как отправить новую указанную клавишу темы?
Я создаю несколько простых функций бота для создания тем и отправки сообщений в чат. Создание "произвольных" потоков и вставка сообщений в потоки с известными идентификаторами - это хорошо, нет проблем, я просто не могу указать идентификатор потока при создании нового. Я следовал за деталями в документации Google, но не могу заставить их работать.
См. https://developers.google.com/hangouts/chat/how-tos/bots-develop
Это мой код - очень простой, но запутанный
$("#fa-comment").click(function() {
$.ajax({
method: 'POST',
url: 'https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY_ID&token=TOKEN_ID',
dataType: "json",
contentType: "application/json; charset=UTF-8",
//data: "{'text':'This creates a new thread and inserts message - thread id is not known'}",
//data: "{'text':'This inserts into a current thread with known id', 'thread':{'name':'spaces/SPACE_ID/threads/THREAD_ID'}}",
success: function () {
$('.response').html('Success');
}
});
})
Оба закомментированы data:
Линии работают отлично.
Я пытался:
data: "{'text':'This inserts into a new thread with specified id', 'thread':{'name':'spaces/SPACE_ID/threads/SPECIFIED_THREAD_ID'}}",
но это приводит к ошибке 500https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?\ threadKey=ARBITRARY_STRING
как написано в документации, но никаких вариантов не работает - получите 400 ошибок и нарушений / неизвестная переменная 'threadkey'
Я следовал всеми возможными способами из документации и пробовал варианты, но безрезультатно.
Несомненно, я кое-что здесь упустил, но не вижу. Любая помощь для этого позволила бы моим волосам снова расти!
3 ответа
Я считаю, что вы, возможно, уже решили это, но в любом случае...
Параметр запроса должен быть thread_key
вместо того threadKey
. Итак, в вашем случае это будет:
url: 'https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY_ID&token=TOKEN_ID&thread_key=THREAD_KEY'
Надеюсь, это пригодится кому-то в будущем:).
Я только что провел утро с той же проблемой, и она плохо документирована.
The threadKey
заголовок работает как задокументировано, но только если вы укажетеmessageReplyOption
заголовок какREPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
.
Я немного изменил ваш код, и он должен работать.
$("#fa-comment").click(function() {
$.ajax({
method: 'POST',
url: 'https://chat.googleapis.com/v1/spaces/SPACE_ID/messages?key=KEY_ID&token=TOKEN_ID&messageReplyOption= REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD',
dataType: "json",
contentType: "application/json; charset=UTF-8",
data: "{'text':'This replies to an existing thread with the same threadKey, or starts a new thread if it doesn't exist', 'thread':{'threadKey':'myThreadKey'}}",
success: function() {
$('.response').html('Success');
}
});
})
Также обратите внимание, что заголовок threadKey теперь устарел (но все еще работает). Но теперь предпочтительнее указывать threadKey в теле запроса (что я и сделал в приведенном мной примере.
Надеюсь это поможет.
В GoogleChat «создание темы» ничем не отличается от «отправки сообщения в тему». Таким образом, вы можете просто отправить любое сообщение, следуя основному руководству, и просто добавить 'threadKey=my_thread_key' в качестве строки запроса к URL-адресу веб-перехватчика. Если my_thread_key не существует, GoogleChat просто создаст новый поток с этим ключом.
Затем используйте ту же строку запроса со значением «my_thread_key» на любом другом веб-перехватчике, чтобы отправить «ответ» в существующий поток.
Подводя итог, один и тот же процесс для создания и ответа на темы. Если не существует, он будет создан. Если существует, на него будет дан ответ.
Простой запрос можно увидеть ниже. Обратите внимание, что все значения, кроме MY_THREAD_KEY в «url», должны быть предоставлены вам при создании веб-перехватчика для вашего пространства.
axios({
method: "post",
url: `https://chat.googleapis.com/v1/spaces/<MY_SPACE_KEY>/messages?threadKey=<MY_THREAD_KEY>&key=<MY_KEY>&token=<MY_TOKEN>`,
data: {
text: `Create/reply to thread`,
},
});
Ознакомьтесь с документацией GoogleChat для разработчиков, в которой объясняется, как работает threadKey:
https://developers.google.com/chat/api/reference/rest/v1/spaces.messages/create#query-parameters