我想像Markdown选项(SO?),在哪里
four leading spaces makes it look like code
blocks have been written
Run Code Online (Sandbox Code Playgroud) 您好,我们在工作中使用 Google Hangouts Chat。我们喜欢看到链接预览,但是如果我们链接到受 gsuite autherization 保护的内部资源,链接预览只是一个告诉机器人登录的框。有没有办法避免这种情况?
新谷歌聊天聊天的文档说你需要授权范围https://www.googleapis.com/auth/chat.bot做几乎任何事情.
这是错误:
在使用OAuth2客户端生成身份验证URL时,我收到范围无效的消息.如果我使用https://www.googleapis.com/auth/chat或google plus等其他范围,我就没有这个问题.
当我尝试在API资源管理器中搜索内容时,URL或URL部分的组合也不起作用.
这是我获取URL的代码,似乎对其他一切工作正常:
var {google} = require('googleapis');
var OAuth2 = google.auth.OAuth2;
var oauth2Client = new OAuth2(
"clientid-idididid.apps.googleusercontent.com",
"_secretsuff",
"http://localhost:3000/auth/google/callback"
);
var scopes = [
"https://www.googleapis.com/auth/chat", //Works
"https://www.googleapis.com/auth/chat.bot" // Does not work
];
var url = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: scopes,
});
console.log(url);
Run Code Online (Sandbox Code Playgroud)
我正在制作一个目前使用 Google Hangout Chat 的聊天机器人,但将移植到其他聊天平台上。
聊天代码在 Node.js 后端处理,意图识别是使用 DialogFlow 的 Nodejs API 完成的。
环聊聊天响应如下:
{
thread: {
name: thread.name
},
text: 'The response in text',
cards:['List of cards to show data']
}
Run Code Online (Sandbox Code Playgroud)
数据工作正常,但我坚持解析从 DialogFlow 获得的响应并决定text
响应的属性。有两个选项可以选择作为text
属性发送。一个是queryResult.fulfillmentText
它只是一个字符串并且很容易分配给text
属性,而另一个是queryResult.fulfillmentMessages
在某处包含相同文本的对象数组。这就是我的情况:
"fulfillmentText": "We could find few matching products based on your query",
"fulfillmentMessages": [
{
"text": {
"text": [
"We could find few matching products based on your query"
]
}
},
{
"text": {
"text": …
Run Code Online (Sandbox Code Playgroud) javascript node.js google-cloud-platform dialogflow-es hangouts-chat
我跟随传入的 bot python发送带有 webhook 的消息,我想用Method:delete删除它。
但我收到错误 401,以下是错误消息。
{'error': {'code': 401,
'message': 'Request is missing required authentication credential. '
'Expected OAuth 2 access token, login cookie or other '
'valid authentication credential. See '
'https://developers.google.com/identity/sign-in/web/devconsole-project.',
'status': 'UNAUTHENTICATED'}}
Run Code Online (Sandbox Code Playgroud)
Webhook 似乎使用密钥和令牌作为授权。但是我无法删除具有相同 url(目标为“data-id”)的消息。
我们已经整合了一个谷歌环聊聊天机器人,为我们的团队提供一些方便的功能。机器人属于“机器人 URL”种类,这意味着环聊将请求发送到应用端点,我们的应用会做出适当的响应。目前,我们正在努力验证来自谷歌的传入请求。每个请求在 Authentication 标头中都有一个不记名令牌,但该 JWT 令牌不会验证。php 客户端库 [ https://github.com/googleapis/google-api-php-client]和在线验证器 [ https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=] 都返回错误“无效签名”
谷歌客户端 php 库的 Google_AccessToken_Verify 类有一个 verifyIdToken 方法,我们在本示例中使用该方法 [ https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/auth/src/auth_cloud_explicit.php]。我们将服务帐户密钥文件的路径和项目 ID 传递给 google 客户端构造函数。然后我们将传入请求的不记名令牌传递给 verifyIdToken 方法。
use Google_Client;
// inside a laravel controller with $request in scope
$bearer_token = $request->bearerToken();
$keyPath = FILE_LOCATION
$client = new Google_Client([
'keyFilePath' => $keyPath,
'projectId' => GCP_CLIENT_ID
]);
$payload = $client->verifyIdToken($bearer_token);
if(!empty($payload)){
return $this->call(ParseGoogleChatRequest::class, [$request]);
}else{
\Log::debug('bad token');
}
Run Code Online (Sandbox Code Playgroud)
我希望谷歌客户端库能够验证谷歌 JWT。这个 github 问题 [ https://github.com/firebase/php-jwt/issues/175]反映了我们实施这种方法的经验。我想获得一些关于我们应该使用哪种方法的一般指导。
我有几个与google.golang.org/api/chat/v1
.
似乎唯一可用的Event
对象是DeprecatedEvent
. 那么,什么是非弃用的呢?
如果DeprecatedEvent
确实是要使用的DeprecatedEvent
对象,则在对象内部,有一个User *User
字段。但是,User
对象似乎与我从响应中实际得到的不同。
例如:
{
'eventTime': '2019-08-27T06:50:12.391141Z',
'user': {
'name': 'users/112...',
'email': 'iskandar.setiadi@...',
'avatarUrl': 'https://lh3.googleusercontent.com/a-/AAu...',
'displayName': 'Iskandar Setiadi',
'type': 'HUMAN'
},
'type': 'ADDED_TO_SPACE',
'space': {
'name': 'spaces/7ag...',
'type': 'DM'
}
}
Run Code Online (Sandbox Code Playgroud)
在API中,User
对象仅包含displayName
,name
,和type
。似乎email
和avatarUrl
不存在。v1 是否已过时,或者是否有任何我不知道的替代方案?
我们的组织在Google Hangouts聊天(新聊天)上谈论它的“事件”,作为其中的一部分,我们要将该会话记录到另一个系统中
现在,我要做的是搜索特定的关键字,然后通过搜索结果找到这些会话,然后单击“转到主题”以获取会话URL。
我使用的是在环聊聊天API的“指南”部分下找到的以下代码,但它仍然没有提供对话的网址-
/**
* Responds to a MESSAGE event in Hangouts Chat.
*
* @param {Object} event the event object from Hangouts Chat
*/
function onMessage(event) {
var name = "";
if (event.space.type == "DM") {
name = "You";
} else {
name = event.user.displayName;
}
var message = name + " said \"" + event.message.text + "\"";
return { "text": message };
}
/**
* Responds to an ADDED_TO_SPACE event in Hangouts Chat. …
Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个 Google Hangouts Chat Bot,它可以检测何时填写表单,并使用机器人将最近提交的表单的响应发送到 Hangouts Chat。我已经基于现有代码构建了它(我的 JS / GAS 知识接近于零),主要基于 GitHub TSFormBot 存储库。问题是,它将每个响应作为不同的消息单独发送,而不是包含所有内容的 1 条消息。
例如,一个 4 个问题的表单会导致机器人发送 4 个单独的回复,每个回复中都有一个不同的答案。你能帮我看看我哪里出错了,这样我就可以在一个回复中获得所有 4 个答案的内容吗?
谢谢!
当前代码:
function postToRoom(e) {
var formResponses = FormApp.getActiveForm().getResponses();
var formResponse = formResponses[formResponses.length-1];
var itemResponses = formResponse.getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
var options, options, url;
url = PropertiesService.getScriptProperties().getProperty('WEBHOOK_URL');
if (url) {
try {
payload = {
"cards": [
{
"header": {
"title": "There is a new …
Run Code Online (Sandbox Code Playgroud) hangouts-chat ×10
hangouts-api ×2
javascript ×2
bearer-token ×1
go ×1
google-forms ×1
node.js ×1
oauth-2.0 ×1
validation ×1