質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Analytics

Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

Q&A

解決済

1回答

3120閲覧

Node.jsでslackにメッセージを送りたいができない

tal

総合スコア20

Google Analytics

Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Slack

Slackは、Tiny Speckという企業からリリースされたコミュニケーションツールです。GoogleDriveやGitHubなど、さまざまな外部サービスと連携することができます。

0グッド

0クリップ

投稿2016/03/15 00:53

https://github.com/btrax/ga_slack
上記のURLを参考に、slackをopenした際に、Google Analyticsのapiをコールして、取得したデータをslackに流したいと考えているのですが、上記のコードだと、下記のようなエラーになってしまいます。

shell

1channel.send(msg); 2 ^ 3TypeError: Cannot read property 'send' of undefined

デバッグしてみると、

JavaScript

1channel = slack.getChannelGroupOrDMByID(SLACK_CHANNEL_ID);

ここで、slackのchanngel idを入れていてもundefinedが返ってくるようなのですが、このようなchannelの取得はできないのでしょうか。

messageを受けとったタイミングだとchannel取得できるようなので、open時にもそのままslackにsendしたいと考えています。

ご教授いただけますと幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://github.com/slackhq/node-slack-client#sending-a-message

node-slack-clientのモジュールを使っているようなので、下記ではどうですか?

channel.sendMessage(msg);

投稿2016/03/15 01:57

編集2016/03/15 01:58
YuG1224

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tal

2016/03/15 02:30

コメントいただきありがとうございます。 sendメソッドが問題なのではなく、下記の部分でundefinedになっている問題についてお聞きしたいという意図でした... var Slack = require('slack-client'); SLACK_CHANNEL_ID = 'aaa'; SLACK_TOKEN = 'xoxb-aaaa'; var slack = new Slack(SLACK_TOKEN, autoReconnect, autoMark); slack.on('open', function() { console.log("Connected to " + slack.team.name + " as @" + slack.self.name);  // シェルから起動すると通ってる。 channel = slack.getChannelGroupOrDMByID(SLACK_CHANNEL_ID); console.log(channel); //undefined ここが問題になっている });
YuG1224

2016/03/15 04:09 編集

var channel = slack.getChannelGroupOrDMByID(SLACK_CHANNEL_ID); TypeError: slack.getChannelGroupOrDMByID is not a function slackには getChannelGroupOrDMByID のfunctionが無いようですが、 SlackDataStoreの方にはありそうです。 https://github.com/slackhq/node-slack-client/blob/570c42085b86c1095b9693e926b53a0d26607f81/lib/data-store/data-store.js#L338 var Slack = require('slack-client'); var SLACK_CHANNEL_ID = 'xxxx'; var SLACK_TOKEN = 'xxxx'; var slack = new Slack.RtmClient(SLACK_TOKEN, {logLevel: 'info'}); slack.on('open', function(){ slack.sendMessage('msg', SLACK_CHANNEL_ID); }); slack.start(); SLACK_CHANNEL_ID が固定ならば、channel変数に格納しなくても良いと思うのですがどうですか?
tal

2016/03/15 08:43

コメントいただきありがとうございます。 >slackには getChannelGroupOrDMByID のfunctionが無いようですが、 SlackDataStoreの方にはありそうです。 こちらありがとうございます。 var slack = new Slack.RtmClient(SLACK_TOKEN, {logLevel: 'info'}); ^ TypeError: Slack.RtmClient is not a function 上記怒られてしまいます..。 >SLACK_CHANNEL_ID が固定ならば、channel変数に格納しなくても良いと思うのですがどうですか? こちらそうですね、コードを修正します。
YuG1224

2016/03/15 09:00

node-slack-client v2.2.1 を使用したので、バージョンを確認してみてください。 バージョンが古いとRtmClientの使い方が違うかもしれません。
tal

2016/03/15 13:47

node-slack-client v2.2.1 をダウンロードしてみたのですが、同じエラーがでてしまっております...。 何度も聞いてしまって申し訳ございませんが、フォルダ構成をお聞きしてもよろしいでしょうか。 ------- node-slack-client - 該当のJS package.json などのような構成に現在はなっております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問