TDでは、サポートのチケット管理とヘルプセンターにZendeskを利用しています。 ヘルプセンターのZendesk Guideの管理UIでは、記事の一覧が多くなった時に記事が探しにくかったり、生のコンテンツのダウンロードができなかったり、と色々改善の余地が大いにあります。 ただ、Zendesk GuideではAPIが提供されており、いろんな操作ができるようになっています。
Help Center API - Help Center API - Zendesk Developer Portal
なので、Zendesk GuideのCLIを作ってみました。
初めてGoを書いたので、色々雑なところもありますが、とりあえず下記ができるようになっています。
- Article / Section / Categoryの一覧取得
- Article Previewの閲覧(プレビューページに飛ぶだけ)
- Article の一括ダウンロード
現在はできないが、今後やりたいこととしては下記。
- ローカルにあるArticle記事からのZendesk Guideへのアップデート・新規作成
- Markdown / HTML への相互変換
- Article 検索
- その他、labelなどのメタ情報の更新
- Zendesk OAuthへの対応
簡単に使い方も紹介します
インストール方法
Macの場合は、下記にてインストールします。
$ brew tap toru-takahashi/zeng $ brew install zeng
使い方
ログイン
zeng configure
コマンドで最初に認証情報を設定します。今の所、パスワード認証かAPIKEY認証が利用できます。2 Factor Authenticationを導入している場合は、APIKEYを使う必要があります。
$ zeng configure Using config file: /Users/takahashi/.zeng.yaml What is Zendesk Subdomain (subdomain.zendesk.com)? Enter a value: yourcompany What is your Zendesk Email? Enter a value: sample@sample.com What is your default locale? Enter a value (Default is en-us): How do you prefer to acccess to Zendesk? 1. password 2. apikey Enter a number (Default is 1): 1 What is your Zendesk password? Enter a value: **************
Article 一覧表示
ZendeskのArticleの一覧やSectionの一覧取得が可能です。
zeng list (article|section|category)
といったコマンドで可能です。オプションで件数制限などもできます。
Articleのコンテンツダウンロード
zeng get article <article_id>
を指定するとカレントディレクトにフォルダを作成し、コンテンツのhtmlと関連するメタ情報のymlファイルを生成します。
htmlを直接編集したりできるので便利です。そのうちそのままhtmlのコンテンツをアップデートできるようにするつもりです。
また、get sectionなどでセクション以下のコンテンツを全て取得したりすることができます。なので、バックアップ目的で簡単に保存できるようになります。
$ zeng get article 10007758874 Using config file: /Users/takahashi/.zeng.yaml Info: Request to https://treasuredata.zendesk.com/api/v2/help_center/en-us/articles/10007758874.json Exported article to a_10007758874/a_10007758874_en-us_Predicting Profile.html Exported metadata to a_10007758874/meta_10007758874_en-us.html
ArticleのPreview
まだArticleのアップデートができないのであまり意味がないですが、article idを指定するとPreview表示を行います。
まとめ
CLIを作ってとりあえず0.0.1をリリースしてみました。 が、まだ全然手元で動かしていないので、こういう使い方がしたいとか、こういう機能がほしいとかあればおしえてください。