Open edvardpotter opened 6 years ago
Так же предлагаю добавить возможность получать amojo_id опционально, сейчас пришлось внести изменения в файл /src/Request/Request.php:
protected function prepareEndpoint($url)
{
if ($this->v1 === false) {
$query = http_build_query(array_merge($this->parameters->getGet(), [
'USER_LOGIN' => $this->parameters->getAuth('login'),
'USER_HASH' => $this->parameters->getAuth('apikey'),
// Изменение
'amojo' => 'Y',
// end
]), null, '&');
} else {
$query = http_build_query(array_merge($this->parameters->getGet(), [
'login' => $this->parameters->getAuth('login'),
'api_key' => $this->parameters->getAuth('apikey'),
]), null, '&');
}
return sprintf('https://%s%s?%s', $this->parameters->getAuth('domain'), $url, $query);
}
Планирую вместе с переходом на новое API. На базе старого это сделать не представляется возможным.
Можете рассказать подробно, что делает amojo
?
amojo
это единый поддомен для работы с API чатов – https://amojo.amocrm.ru/v2/...
.
@dotzero В новой версии не собираетесь использовать Guzzle? amojo - дополнительный параметр(о котором можно почитать тут) который позволяет получить данные для работы с api чатов(account_id и т.п.). В официальной доке. написано:
UUID, Уникальный идентификатор аккаунта для работы с сервисом онлайн-чатов
У меня получилось сделать реализацию работы с чатами используя вашу библиотеку, и guzzle:
//...
$params['account_id'] = $amo->account->apiCurrent()['amojo_id'];// Получаю account_id для работы с чатами
//...
App::$router->any('/hookw.php', function () use ($params, $client, $amo) {// Хук для получения сообщений из WhatsApp
require_once __DIR__ . '/../whatsapi.php';
$data = json_decode(file_get_contents('php://input'), true);
$message = $data['messages'][0];
$tmp = explode("@", $message['author']);
$phone = $tmp[0];
$body = json_encode([
'account_id' => $params['account_id']
]);
$signature = hash_hmac('sha1', $body, $params['secret']);
$headers = [
"cache-control" => "no-cache",
"content-type" => "application/json",
"x-signature" => $signature
];
$options = [
'body' => $body,
'headers' => $headers,
];
// Подключаю аккаунт к каналу(чату)
$response = $client->post('https://amojo.amocrm.ru/v2/origin/custom/' . $params['channel_id'] . '/connect', $options);
// Scope id для публикации сообщений в аккаунт
$params['scope_id'] = json_decode($response->getBody(), true)['scope_id'];
$user_id = QB::table('users')->where('phone', '=', $phone)->first()->id;
$conversation_id = QB::table('conversations')->where('user_id', '=', $user_id)->first()->id;
if ($conversation_id) {
$body = json_encode([
'event_type' => 'new_message',
'payload' => [
'timestamp' => time(),
'msgid' => uniqid(),
'conversation_id' => $conversation_id,
'sender' => [
'id' => $user_id,
'avatar' => 'https://www.amocrm.ru/version2/images/logo_bill.png',
'name' => $message['senderName'],
'profile' => [
'phone' => $phone,
],
'profile_link' => 'http://example.com',
],
'message' => [
'type' => 'text',
'text' => $message['body']
]
]
]);
$headers = [
"cache-control" => "no-cache",
"content-type" => "application/json",
"x-signature" => hash_hmac('sha1', $body, $params['secret'])
];
$options = [
'headers' => $headers,
'body' => $body
];
$response = $client->post("https://amojo.amocrm.ru/v2/origin/custom/{$params['scope_id']}", $options);
}
});
а как вы получаете сообщения из WA?
В новой версии не собираетесь использовать Guzzle?
Собираюсь
@shift-reality Написан свой хук для получения сообщений от туда
@edvardpotter а подробнее можете, плиз? также необходима такая возможность просто, реализовали через веб, но глючит....
Планируете ли добавить функционал для работы с amo чатами?