こんにちわ、マイケルです。 今日はrubyを使ってFAXの自動送信をやったのでブログに書いておきます。
なぜやるのか
手動でfax送信するのがめんどくさいからです。 弊社では物件の内見を予約する際に管理会社様にその旨faxしていますが web上でフォームに内容を入れて送信ボタンを押したらそのままfax行って欲しいのです。
今時faxですか。。と言いたくなりますが不動産業界は古い業界で 未だにfaxがバンバン使われており、faxじゃないと受け付けてくれない所も多いです。
準備
実装
inter faxではsoapでAPIを提供しています。 既にinter fax用のgemがこの辺にあるのですがメンテされてないみたいで使えなかったです。 なのでsavonというsoap client用gemを使います。
gem install savon
savonを入れたら早速実装していきます。 faxを送信する部分を作ります、inter faxのAPI仕様はこの辺に記載されています。 今回はこの中に記載されているSendFaxメソッドを使います。
client = Savon.client(wsdl: "https://ws.interfax.net/dfs.asmx?WSDL")
response = client.call(
:sendfax,
message:
{
"Username" => "inerfax用user_name",
"Password" => "interfax用password",
"FaxNumber" => "FAX番号",
"FileData" => Base64.encode64(File.binread("送信するfaxのpdf保存先path")),
"FileType" => "PDF"
}
)
response.body[:sendfax_response]
まぁ何も難しいことは無いですね。 これだけで無事指定されたPDFの内容がFAXされます。 試してないですが、htmlでも行けるみたいですね。
ちなみに
client.operations
とすると実行出来るメソッドが取得出来ます。 soapはxmlをゴリゴリ書いていくことを考えるとうんざりしますが gemでここまで抽象化されていると便利ですね。