Я устанавливаю собственную команду слеша между Slack и Build kite с использованием Ruby. Я получаю правильные вызовы API, и информация передается. Кажется, все работает, но когда я пытаюсь настроить полезную нагрузку json, которую я получаю, я не могу использовать новое форматирование Slacks. У меня это работает со старым форматированием, но когда я переключаюсь на новое, оно ломается и просто дает мне строку.
Я попытался разобрать json, убедиться, что он действителен, и использовать другие методы, такие как response.body.
Этот JSON приведет к строке:
[{
"type":"section",
"text":
{
"type":"mrkdwn",
"text":"*Deploy History:* Deploys in the last 6 hours"
}
}]
Этот JSON будет правильно отформатирован:
{
text: "",
attachments: [{
title: 'Deploy History',
text: 'Deploys in the last 6 hours',
:fields => [{
:title => 'Message',
:value => build_list[0].message,
:short => true
}, {
:title => 'Name',
:value => build_list[0].creator.name,
:short => true
}, {
:title => 'Finished at',
:value => build_list[0].finished_at,
:short => true
}],
color: 'good'
}]
}
Ожидаемый результат первого кода выглядел бы красиво и красиво, но он просто выплевывает это: {"type": "section", "text": {"type": "mrkdwn", "text": " История развертывания: Развертывание за последние шесть часов "}}]
Результат работы нижнего кода хорош и хорош
Файл, который вызывается при отправке команды слэша
module SlackLine::Commands
module DeployHistory extend self
def deploy_history
build_list = buildkite.process_history_event
presenter.deploy_history(build_list)
end
def presenter
SlackLine::Presenters::DeployHistoryPresenter
end
def buildkite
SlackLine::Services::BuildkiteHistoryService
end
end
end
Это файл, в котором мы делаем вызов API для buildkite
def deploy_stats
finished_from = 6.hours.ago.to_time.iso8601
options = {
branch: 'master',
finished_from: finished_from,
state: 'finished'
}
build_list = client.pipeline_builds('calendly', 'calendly', options)
build_list
end