Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ничего не отправляет! #2

Open
doksec opened this issue Dec 4, 2015 · 17 comments
Open

Ничего не отправляет! #2

doksec opened this issue Dec 4, 2015 · 17 comments

Comments

@doksec
Copy link

doksec commented Dec 4, 2015

[2015-12-04 21:01:43](ERROR @ /index.php) Cannot send message to Slack, reason: ""
[2015-12-04 21:03:32](ERROR @ /index.php) Cannot send message to Slack, reason: ""
[2015-12-04 21:03:52](ERROR @ /index.php) Cannot send message to Slack, reason: ""

Стр. 404 открывается. Хостинг ihc.ru/
Текущая версия PHP 5.4.45
Modx 2.4.2-pl

Что делать?

@alroniks
Copy link
Owner

alroniks commented Dec 4, 2015

Стоит ли расширение CURL для PHP?

@doksec
Copy link
Author

doksec commented Dec 4, 2015

Да стоит и работает.

@alroniks
Copy link
Owner

alroniks commented Dec 4, 2015

А точно указан правильный URL для хука? Потому что slack не присылает в ответ на запрос OK, потому и не отправляется.

Нужно посмотреть, что в переменной $entrypoint (https://github.com/Alroniks/modx-slackify/blob/4dac5e9608677cc7279ef7d187eb5ccc66bca93a/core/components/slackify/model/slackify/slackify.class.php#L73) в момент отправки и попробовать открыть ссылку вручную. Скорее всего slack выдаст ошибку, по которой можно будет понять что к чему.

@doksec
Copy link
Author

doksec commented Dec 4, 2015

Может в бесплатных учетках slack хуки отключены?
Сейчас попробую получить $entrypoint .

@doksec
Copy link
Author

doksec commented Dec 4, 2015

Вот что там
[OnPageNotFound]string(77) "https://hooks.slack.com/services/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"

Переход по этой ссылке выдает "No payload received"

@alroniks
Copy link
Owner

alroniks commented Dec 4, 2015

Да, все верно. payload нужно только через пост слать

@doksec
Copy link
Author

doksec commented Dec 4, 2015

От тебя тест прошел test alroniks

@alroniks
Copy link
Owner

alroniks commented Dec 4, 2015

Хм, странно. В случае, если не верно что-то отправлено, то он должен писать в лог ответ от слака. А тут получается пусто. Т.е. похоже, что шлет куда-то не туда. Либо таки курл не шлет.

@doksec
Copy link
Author

doksec commented Dec 4, 2015

У меня стоит msSMS и шлет. Может конфликт быть?

@doksec
Copy link
Author

doksec commented Dec 4, 2015

Есть какой то способ протестировать curl?

@doksec
Copy link
Author

doksec commented Dec 4, 2015

if (function_exists('curl_init')) { echo 'Работает'; } else { echo 'Не работает'; }

Работает!

@alroniks
Copy link
Owner

alroniks commented Dec 4, 2015

Нужно тогда смотреть, что там куда шлется.
Можно попробовать получить вот этот https://github.com/Alroniks/modx-slackify/blob/4dac5e9608677cc7279ef7d187eb5ccc66bca93a/core/components/slackify/model/slackify/slackify.class.php#L75 payload и отправить его через какой-нить rest-экстеншен в браузере на ентрипоинт и посмотреть, что там не так.

@doksec
Copy link
Author

doksec commented Dec 4, 2015

Пробовал есть.
{"text":"*Error 404*, Page not found","username":"powervideo.ru","channel":"#site","attachments":[{"pretext":"This is an automated notification of a 404 error that has occured on the site.","color":"#FF0000","title":"www.powervideo.ru\/ustanovka_video\/ustan_zanynei.ht","text":"Requested url not found and returns 404 error","fields":[{"title":"When","value":"05 Dec 2015 - 0:36:21","short":true},{"title":"Visitor IP","value":"95.165.148.210","short":true},{"title":"User agent","value":"Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/46.0.2490.86 Safari\/537.36","short":false}]}],"link_names":false,"unfurl_links":false,"unfurl_media":true,"allow_markdown":true,"markdown_in_attachments":""}

@doksec
Copy link
Author

doksec commented Dec 4, 2015

CURLOPT_POST TRUE для использования обычного HTTP POST. Данный метод POST использует обычный application/x-www-form-urlencoded, обычно используемый в HTML-формах.

74 curl_setopt($ch, CURLOPT_POST, count($fields));
Может это?

@alroniks
Copy link
Owner

alroniks commented Dec 4, 2015

Да вряд ли там каунт будет при делах, но можно поэкспериментировать.

@doksec
Copy link
Author

doksec commented Dec 4, 2015

Эээ.. Я вот ничего не понял, я пользователь (ну может чуть продвинутый), но не программист.
Просто скажи, что сделать. Из мануала я понял, что по идее выглядеть должно так
curl_setopt($ch, CURLOPT_POST, true);
тогда куда воткнуть оставшийся count($fields)

@doksec
Copy link
Author

doksec commented Dec 5, 2015

Заработало!!!

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $entrypoint);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        $status = curl_error($ch);
        curl_close($ch);

        if ($output != 'ok') {
            $this->modx->log(modX::LOG_LEVEL_ERROR, 'Cannot send message to Slack, reason: "' . $output .  '" или "' . $status. '" '); //"' . var_dump($output). '"
        }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants