Мне нужно обновить настройки автоответа пользователя (вне офиса) в Exchange.У меня есть весь код аутентификации на месте, и он работает.Теперь мне просто нужно сказать, что обновлять.
Пример C #:
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var mailboxSettings = new MailboxSettings
{
AutomaticRepliesSetting = new AutomaticRepliesSetting
{
Status = AutomaticRepliesStatus.Scheduled,
ScheduledStartDateTime = new DateTimeTimeZone
{
DateTime = "2016-03-20T18:00:00",
TimeZone = "UTC"
},
ScheduledEndDateTime = new DateTimeTimeZone
{
DateTime = "2016-03-28T18:00:00",
TimeZone = "UTC"
}
}
};
var me = new User();
me.MailboxSettings = mailboxSettings;
await graphClient.Me
.Request()
.UpdateAsync(me);
Я не уверен, как перевести это на PHP с помощью Graph API.Я пытался найти документ о том, как сделать это с помощью PHP API, но безуспешно.
Это код PHP, который я придумал:
include "../../vendor/autoload.php";
$code=$_GET["code"];
use Microsoft\Graph\Graph;
use Microsoft\Graph\Model;
$oauthClient = new \League\OAuth2\Client\Provider\GenericProvider([
'clientId' => "clientid",
'clientSecret' => "secret",
'redirectUri' => "redirect",
'urlAuthorize' => "auth",
'urlAccessToken' => "access",
'urlResourceOwnerDetails' => '',
'scopes' => 'offline_access MailboxSettings.ReadWrite'
]);
try {
// Make the token request
$accessToken = $oauthClient->getAccessToken('authorization_code', [
'code' => $code
]);
$token=$accessToken->getToken();
$graph = new Graph();
$graph->setAccessToken($token);
$user = $graph->createRequest('GET', '/me/mailboxSettings')
->setReturnType(Model\MailboxSettings::class)
->execute();
$mailboxSettings = new Model\MailboxSettings();
$start=new Model\DateTimeTimeZone();
$start->DateTime = "2019-07-03T18:00:00";
$start->TimeZone = "America/New_York";
$end=new Model\DateTimeTimeZone();
$end->DateTime = "2019-07-04T18:00:00";
$end->TimeZone = "America/New_York";
$replySettings = new Model\AutomaticRepliesSetting($propDict);
$replySettings->setStatus(Model\AutomaticRepliesStatus::SCHEDULED);
$replySettings->setScheduledStartDateTime($start);
$replySettings->setScheduledEndDateTime($end);
$replySettings->setInternalReplyMessage("I'm out of the office");
$replySettings->setExternalReplyMessage("I'm out of the office");
$mailboxSettings->setAutomaticRepliesSetting($replySettings);
}
catch (League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
exit('ERROR getting tokens: '.$e->getMessage());
}
Этот код неДайте мне какие-либо ошибки, но я не уверен, как на самом деле отправить запрос на обновление для обновления настроек.
Кроме того, существует ли способ для токена доступа сохраниться?Я пытаюсь сделать следующее: пользователи вводят запросы на перерывы, вводя то, что они хотят, чтобы их сообщение об отсутствии на работе было.Я бы запустил задание cron, которое обновит их сообщение об отсутствии на работе, когда их нет в офисе.Это возможно?