//tips
//smart contract
Webhook設定確認の続き。
gihubでのevent実行によりHTTP Requestsにてgithubからの画像postが行われた。
post詳細内容はjson形式でngrokのターミナル記載の下記からみることができた。
http://127.0.0.1:4040
ここからはserver.jsのimage送付部分を加工してjsonから表示内容を決めていく。
app.post("/github", (req, res) => {
//コンテンツ設定
const content = ":wave: Hi mom!";
const avatarUrl = ;
axios
.post(process.env.DISCORD_WEBHOOK_URL, {
//ターゲットであるdiscordに送付
content: content,
embeds: [
{
image: {
url: avatarUrl,
},
},
],
})
.then((discordResponse) => {
//送付できたらwebページに成功メッセージ表示
console.log("Success!");
res.status(204).send();
})
.catch((err) => console.error(`Error sending to Discord: ${err}`));
});
まずはjsonから画像部分を引っ張るようにする。
const avatarUrl = req.body.sender.avatar_url;
//jsonのsenderのavatar_url項目から引っ張る
コードを変更したのでcontrol+Cでnpm startを中断し、再度npm startで更新する。
このコード変更後の更新作業をなくせるツールでnodemonというものがあるのでインストールしておく。
npm install nodemon -g
これで自動的に更新作業をしてくれるようになるそう。私はインストールしたが効果ないようなので保留。
下記のように送付コンテンツを書き換えることで、starを押すと… just starred webhooks-courseのように表示されるようになった。
app.post("/github", (req, res) => {
//コンテンツ設定
const username=req.body.sender.login;
const repoName= req.body.repository.name;
const content = `${username} just starred ${repoName}`;
const avatarUrl = req.body.sender.avatar_url;//jsonのsenderのavatar_url項目から引っ張る
さらにdiscordに送る場合は絵文字もつけることができ、
const content = `:taco: :taco: ${username} just starred ${repoName}:tada: :tada:`;
することでタコスの絵文字などを一緒に使用することができる。
Netlifyが楽にコマンドを管理できるツールとして役に立つとのことでインストール。
https://tech.gootablog.com/article/use-netlify/
npm install netlify-cli -g
netlify login
そうするとnetlify-discorderという新たなファイルができているので、中を見るとdiscorder.jsファイルができている。これは先のexpresscodeとかなり似ている。異なる点としてはasyncが使われていること。
今度はexpress-discorderの代わりに、こちらで操作してみる。
cd netlify-discorder
Npm install
netlify deploy --prod
? What would you like to do? + Create & configure a new site
新たなサイトを作ってくれるよう。
表示されたLogsからnetlifyページに飛ぶことができた。netlifyの登録はgithubとの連携で可能。
netlifyのEnvironment variablesのkeyに名前DISCORD_WEBHOOK_URL、valueにdiscordのURLを入れる。
このnetlifyのgithubstarsのurlをgithubの設定に持ってくる。これによりstarをクリックするとdiscordに通知されることが確認できた。
進めていくと今度はtwilioが現在webhookを使う上ではお勧めのプラットフォームとのこと。
Webhookベースのアプリケーション作成に移る。簡単なメッセージアプリになる予定。
https://www.terrasky.co.jp/twilio/
Twillioのアカウント作成。
フリーアカウントを作成し、トライアルナンバーをget。
Phoneのactive numberでメッセージを送れるwebhookを確認することができた。twillioの場合はwebhookではなく、twimlという独自の言語を使用するようなのでそちらでの活用の仕方をみてみる。
TwiML Binを下記で新たにcreate。
<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Message>You got this!</Message>
</Response>
active numberの設定で上記のtwimlを設定。これで電話番号で連絡してもメッセージを受け取ることができる。
一通りのwebhookの流れは理解できてきたので。再度parsiqの設定に戻る。
Step 3 - Create Webhook
Login to PARSIQ account. Create a webhook transport then set the ngrok forwarding address to the transport URL
ngrok forwarding address というものは理解できるのでそちらを設定。
cd prq-webhook
ngrok http 3000
parisiqのtransform設定のwebhookにngrok生成のURLをアタッチ。
Sampleで紹介されていた下記を新しく作成したsmart triggerに設定。
stream EthUsdPriceUpdates
from ChainlinkPriceFeed
where @pair == "ETH/USD"
process
let eth_usd_pair = getChainlinkPriceFeedPair("ETH/USD")
emit {..., eth_usd_pair}
end
再度下記を行う。
cd prq-webhook
node index.js
その上でclick 'Deploy' from the Smart Trigger page in PARSIQ account。
Trigger deployedの表示。デプロイはされたよう。
In a few minutes you should see the data from the smart trigger in your application.
確かにtriggerd produced 1 eventとpayloadが表示された。npm install していないこととpage表示の設定を.jsの方に記載していないので特にngrokページでのリアクションはない。
できれば通知を飛ばしたいのでdiscordの方に通知を飛ばせる方法がないか探る。
一通りParsiqから認証接続作業を行うとメッセージがdiscrodで確認できた。
「いらっしゃいParsiq Botちゃん。ほら、ちゃんとご挨拶して!」
できない要因がわからないのでサポート(Bd@parsiq.net)に連絡。返事待ち。