LoginSignup
0
0

More than 3 years have passed since last update.

JavaでTwilio使ってみるよ!(SMS編 その1)

Last updated at Posted at 2020-02-12

前回、pom.xmlにTwilio SDKの依存を追記したところから。

必要なもの

Twilioに登録したときの、下記の情報が必要です。

  • ACCOUNT SID
  • AUTH TOKEN
  • callerId(購入した電話番号)

電話番号ですが、SMSを送る場合は日本の050番号じゃダメみたいです。
アメリカの番号にしましょう。

実装してみる

Twilioの公式ヘルプを参考に実装してみます。(ほぼそのままですが)
https://jp.twilio.com/docs/sms/api/message-resource

ACCOUNT_SID、AUTH_TOKEN、電話番号は適宜変えてください。

なお、電話番号は国際電話表記じゃないとだめです。
例えば、「090-0012-3456」に送る場合は、「+819000123456」となります。
(日本の国番号+81に、市外局番の先頭の0を除いた形)

SMSController.java
package jp.co.pmtech.iwata.twilio.controller;

import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SMSController {

    /** ACCOUNT SID */
    private static final String ACCOUNT_SID = "*******";
    /** AUTH TOKEN */
    private static final String AUTH_TOKEN  = "*******";

    @PostMapping("/sms")
    public void sms() {

        // twilioの初期化
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);

        // 送信するメッセージ
        String body = "こんにちは!\n"
                    + "テストメッセージです。";

        // SMSを送る
        Message message = Message.creator(
            new PhoneNumber("+8190********"),  // 送信先の電話番号
            new PhoneNumber("+1**********"),   // callerID(購入した番号)
            body).create();

        System.out.println(message.getSid());
    }
}

動かしてみる

SpringBootを起動して、http://localhost:8080/sms を叩いてみましょう。
あ、@PostMappingにしちゃったので、Talend API Testerから叩きますか。

1.png

おー!届きました!
ね、チョロいでしょ?

※ トライアル版の場合、メッセージの先頭に「Sent from a Twilio Trial account.」という文字列が追加されるようです。

絵文字って送れるの?

🤣 ←この絵文字を送ってみたいと思います。
Unicodeで送ればいいのかな?

やってみる

https://0g0.org/unicode/1F923/
文字コードはu+1F923らしいのでやってみます。

        // 送信するメッセージ
        String body = "こんにちは!\n" + "\u1F923" + "\u1F923" + "\u1F923" +"\n"
                    + "テストメッセージです。";

2.png

あれ?なんか変な文字になった。

絵文字のUnicode表記方法

絵文字は拡張文字なので4バイトです。
JavaのUnicode表記は2バイトしか書けないので、サロゲートペアで2バイトづつ表現しなきゃいけないみたい。

https://www.fileformat.info/info/unicode/char/1f923/index.htm
ここに表記方法のってました。

Encodings
C/C++/Java source code "\uD83E\uDD23"
        // 送信するメッセージ
        String body = "こんにちは!" + "\uD83E\uDD23" + "\uD83E\uDD23" + "\uD83E\uDD23" +"\n"
                    + "テストメッセージです。";

3.png

やったね🤣🤣🤣

次回予告

送信失敗とかわかるのかな?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0