php - 通过 Graph 向 Teams 中的频道发送消息
问题描述
我尝试向团队中的特定频道发送消息。它与“https://developer.microsoft.com/de-de/graph/graph-explorer”完美配合。
为了接收访问令牌,我执行以下操作。这部分有效,因为我可以用它检索用户信息和其他东西。
$guzzle = new \GuzzleHttp\Client(['verify' => false]);
$tenantId = '<tenant_id>';
$clientId = '<client_id>';
$clientSecret = '<client_secret>';
$url = 'https://login.microsoftonline.com/' . $tenantId . '/oauth2/token?api-version=1.0';
$token = json_decode($guzzle->post($url, [
'form_params' => [
'client_id' => $clientId,
'client_secret' => $clientSecret,
'resource' => 'https://graph.microsoft.com/',
'grant_type' => 'client_credentials',
],
'verify' => false
])->getBody()->getContents());
$accessToken = $token->access_token;
这部分现在是产生错误的部分
$graph = new Graph();
$graph->setAccessToken($accessToken);
$url = '/teams/<team_id>/channels/<channel_id>/messages';
$queryParams = [
'body' => [
'content' => 'foo'
]
];
$info = $graph->setApiVersion("beta")->createRequest("POST", $url)
->addHeaders(array("Content-Type" => "application/json"))
->attachBody($queryParams)
->setReturnType(BetaModel\User::class)
->execute();
echo '<pre>';
print_r($info);
这会产生以下错误
{
"error": {
"code": "UnknownError",
"message": "",
"innerError": {
"date": "2020-11-11T10:14:03",
"request-id": "<request_id>",
"client-request-id": "<client_request_id>"
}
}
}
团队 id 和频道 id 是正确的,我可以通过使用来检索它们
/users/<user_id>/joinedTeams
和
/teams/<teams_id>/channels
如前所述,它适用于图形资源管理器页面。我知道我需要以某种方式在用户上下文中发送消息,但我无法让它工作,而且我找不到有用的信息,所以我很高兴。提前致谢!
解决方案
推荐阅读
- php - $request->get() 时 laravel + 字符丢失
- sql - WHERE 子句中的 SQLite 计算列似乎正在工作(?)
- unity3d - Unity3D 零件运动
- python - Python如何将列表返回给其他函数?
- javascript - 如何使用节点 js 将字符串路径转换为 JSON 父子树?
- curl - 使用 mingw64 编译静态 cURL 时对 difftime64 的未定义引用
- arduino - ESP8266 WiFiUDP 发送数据包导致挂起然后崩溃
- angular - 通过表单控件从父级获取验证器
- stackexchange-api - SEDE 中的结果计数与 Stack Exchange 的 API 不匹配
- python - 如何在不结束python中的for循环的情况下使用return?