• 4
    いいね
  • 0
    コメント

あんさんぶるスターズ!チームで開発担当をしております。本日は軽めの話題として、弊社で問い合わせ対応に利用しているZendeskのAPIをRubyから操作する方法について書いてみたいと思います。

ZendeskはAPIを提供しています。また、Ruby Gemも提供されています。これを軽く使ってみます。

問合せ一覧を出力してみる

まずgemをrequireします。

require 'zendesk_api'

APIに接続します。

client = ZendeskAPI::Client.new do |config|
  config.url = 'https://hoge.zendesk.com/api/v2'
  config.username = 'hoge@fuga.com'
  config.token = 'hogefugafoobar'
  config.retry = true
end

検索します。検索クエリの詳細は公式ヘルプをご確認ください。

result = client.search(query: 'tags:あんさんぶるスターズ イベント・プロデュースがプレイできない created>2016-12-16T00:00:00+09:00')

検索結果を出力します。とりあえずファイルにメールの問合せ本文を一覧で出力してみます。

open("desc.txt", "w") do |out|
  result.all do |t|
    out.puts(t.description)
    out.puts("===========================")
  end
end

これで対象の問合せの本文がdesc.txtに出力されます。

同じ問合せが多数来た時に対象機種をリストアップしたり、上記のように一覧で出力したりするのに活用しています。

チケットにメモを追加してみる

Zendesk側で設定して、特定のタグを含むチケットが来た場合に特定のURLをたたく、といった事も可能です。

例えば、チケットに管理画面のURLを追加するようにしてみましょう。

Zendesk側でURLターゲットを指定します。
zendesk_url.png

次に、ターゲット先のサーバー側のプログラムを書いていきます。チケットに追加情報を書き込むには、同様にZendeskのクライアントが必要になりますので、クライアントで接続します。

client = ZendeskAPI::Client.new do |config|
  config.url = 'https://hoge.zendesk.com/api/v2'
  config.username = 'hoge@fuga.com'
  config.token = 'hogefugafoobar'
  config.retry = true
end

次に送られてくるリクエストを受けるためのパスを設定します。

post '/add_comment' do
  return add_comment(client, params[:value])
end

呼び出されるメソッドで、内部向けのコメントをチケットに追加する処理を書きます。

def add_comment(client, ticket_id)
  # チケットの詳細情報を取得
  t = client.tickets.find(id: ticket_id)

  # コメントを作成
  admin_url = get_admin_user_url(t)
  t.comment = ZendeskAPI::Ticket::Comment.new(client, value: admin_url, public: false)
  t.save!
  t.description
end

get_admin_user_url はチケットから管理画面のURLの文字列を簡単なメソッドです。

def get_admin_user_url(t)
  user_id = get_user_id(t)
  return if user_id.blank?
  "http://kanrigamen.url/users/#{user_id}"
end

def get_user_id(t)
  # 本文が空なら無視
  return nil if t.description.blank?
  # 本文を行毎の配列にする
  message = t.description.split("\n")
  message.each do |m|
    s = m.split(/[ \+]/)
    if s[0] == "ユーザーID:"
      return s[1].strip
    end
  end
  return nil
end

すると、該当する問合せがあった場合に、チケット作成時に自動でコメントが追加されます。

スクリーンショット 2016-12-13 16.09.20.png

カカリアスタジオでは、上記のようにAPIを活用して、問合せ業務の効率化を図っています。

おわりに

ソーシャルゲームでは、ユーザーの生の声がレビューや問合せなどでダイレクトに届きます。開発現場までほぼリアルタイムで届きます。それが醍醐味でもあります。

ただ、ユーザー数も増えてくると対応も大変になってきます。そこで、少しでもユーザーの声に耳を傾けるべく、できるだけ必要な情報に素早く簡単にアクセスできる環境を整えるよう心がけています。