Q&A

LIFF上のアンケートで回答された値をPHPで取得したい。

前提・実現したいこと

LIFF上のアンケートで回答された値をPHPで取得したい。

発生している問題・エラーメッセージ

LIFF上のアンケートで回答された値をメッセージで返す事は出来ているが、PHPで取得する方法が分からない。

該当のソースコード

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>筋トレ管理</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rossorigin="anonymous"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.min.css"> </head> <body>

<form class="w-75 mx-auto">
    <p class="mt-3">名前</p>
    <div>
        <input class="form-control w-100 mt-1" name="name" placeholder="" required>
    </div>
    <p class="mt-3">腕立て</p>
    <div>
        <input class="form-control w-100 mt-1" name="udetate" required>
    </div>
    <p class="mt-3">腹筋</p>
    <div>
        <input class="form-control w-100 mt-1" name="fukkin" required>
    </div>
    <p class="mt-3">背筋</p>
    <div>
        <input class="form-control w-100 mt-1" name="haikin" required>
    </div>
    <p class="mt-3">スクワット</p>
    <div>
        <input class="form-control w-100 mt-1" name="sukuwat" required>
    </div>
    <input type="submit" class="mt-4 btn btn-primary" value="送信">
</form>

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" crossorigin="anonymous"></script>
<script charset="utf-8" src="https://static.line-scdn.net/liff/edge/2.1/sdk.js"></script>
<script>

    $(document).ready(function () {
        const liffId = "**********-********";
        initializeLiff(liffId);
    })

    function initializeLiff(liffId) {
        liff.init({
            liffId: liffId
        }).then(() => {
            initializeApp();
        }).catch((err) => {
            console.log('LIFF Initialization failed ', err);
        });
    }

    function sendText(text) {
        liff.sendMessages([{
            'type': 'text',
            'text': text
        }]).then(function () {
            liff.closeWindow();
        }).catch(function (error) {
            window.alert('Failed to send message ' + error);
        });
    }

    const params = (new URL(document.location)).searchParams;
    const key = params.get('key');

    $(function () {
        $('form').submit(function () {
            const name    = $('input[name="name"]').val();
            const udetate = $('input[name="udetate"]').val();
            const fukkin  = $('input[name="fukkin"]').val();
            const haikin  = $('input[name="haikin"]').val();
            const sukuwat = $('input[name="sukuwat"]').val();
            const msg = `${name}\n${udetate}\n${fukkin}\n${haikin}\n${sukuwat}`;
            sendText(msg);
            return false;
        });
    });

</script>

</body> </html>

試したこと

補足情報(FW/ツールのバージョンなど)

  • 0
  • 1
  • 1002
  • X(旧Twitter) facebook
  1. LIFF上で sendText を用いてユーザーにメッセージを送信してもらう
  2. webhook を用いて (1) でユーザーが送信したテキストを受信し、したい処理を行う

でできると思います。多くの人がすでにやっていると思うので、 全体については LIFF + Messaging API で、 (2)については Messaging API + PHP webhook で検索すればやりたいことができると思います。

  • 1
本当によろしいですか? question.vm