我根据文档中的示例代码,使用JAVA Api创建了一个聊天机器人, Bot使用服务帐户。
机器人在一个房间中可以正常工作,但是当我尝试在新房间中使用它时,我遇到了错误。
将Bot添加到新会议室并尝试发布消息后,我收到了 {“ code”:403,“ errors”:[{“ domain”:“ global”,“ message”:“呼叫者没有许可”,“ reason”:“禁止”}],“ message”:“呼叫者没有权限”,“状态”:“ PERMISSION_DENIED”}
将Bot添加到会议室之后,在发布消息之前是否还需要采取其他步骤?
在此问题上的任何帮助将不胜感激!
使用的代码:
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = new JacksonFactory();
HangoutsChat.Builder builder = new HangoutsChat.Builder(httpTransport, jsonFactory, credentials);
builder.setApplicationName(bot);
HangoutsChat service = builder.build();
ListSpacesResponse response = service.spaces().list().execute();
// Look for space Space _space = null;
while (response.getSpaces() != null && _space == null) {
for(Space s : response.getSpaces()) {
if(s.getDisplayName().equals(space)) {
_space = s;
}
}
if (_space == null && response.getNextPageToken() != null && !response.getNextPageToken().isEmpty()) {
String pageToken = response.getNextPageToken();
response = service.spaces().list().setPageToken(pageToken).execute();
} else {
break;
}
}
if(_space != null) {
Message m = new Message();
byte[] data = {0x0A};
m.setText(text.replace("\\r", "").replace("\\n", new String(data)));
Message r = service.spaces().messages().create(_space.getName(), m).setThreadKey(thread).execute();
Element el = new Element("message");
el.setAttribute("space", r.getSpace().getDisplayName());
el.setAttribute("text", r.getText());
el.setAttribute("thread", r.getThread().getName());
outNode.addContent(el);
} else {
throw new Exception("SendHangouts failed " + "Space " + space + " not found");
}