Slack неправильно форматирует мой JSON для команды слэша - PullRequest
0 голосов
/ 03 июля 2019

Я устанавливаю собственную команду слеша между 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

1 Ответ

0 голосов
/ 03 июля 2019

Решено! Все, что мне нужно было сделать, это добавить блок. Спасибо за терпение, и я надеюсь, что это поможет кому-то!

      {
        "blocks": [
          {
            "type": "section",
            "text": {
              "type": "mrkdwn",
              "text": "Deploys in the last six hours"
            }
          }
...