{"_id":"messaging-api-line","_rev":"122-69047a6d3c448558a7b036d58814e3dd","name":"messaging-api-line","description":"Messaging API client for LINE","dist-tags":{"latest":"1.1.0","next":"1.1.0-alpha.0"},"versions":{"0.1.0-1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.1.0-1","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.1.0-1","scripts":{},"_shasum":"a01a4374b2e5aa85204f071ae67f46177a469743","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"}],"dist":{"shasum":"a01a4374b2e5aa85204f071ae67f46177a469743","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.1.0-1.tgz","integrity":"sha512-4Bam53db1j89ddbB12nnmTpyChe1ZbRo2v2uARosIcV93i+AAOwzlmuxE4JIoK4VfSuUMGgaLE8VWQqer5xtDQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH90owAKM+XlPIQ8CS3kmeuRt3uMAePLWncbB+1mt2AxAiAKwbim7jY8EsNG/iblG/perRqhsYkvCkx0Aes/7uLb4Q=="}]},"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/messaging-api-line-0.1.0-1.tgz_1494481463025_0.04663994815200567"},"directories":{}},"0.1.0-2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.1.0-2","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.1.0-2","scripts":{},"_shasum":"56064eb88df009da1bcc0178ef7f21a76a55133d","_from":".","_npmVersion":"4.1.2","_nodeVersion":"7.6.0","_npmUser":{"name":"kpman","email":"s92f002@gmail.com"},"dist":{"shasum":"56064eb88df009da1bcc0178ef7f21a76a55133d","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.1.0-2.tgz","integrity":"sha512-7c4NT3/9iqtLbIXehTLzemF+xvr6Woa89GnrUwLOw1RKo4JVCCSjNJsSr2zwl/L2eF1zVyv+Qv3XUHsCTIrFTQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH7B979JhDFPe1+iKX1ITwKmpvusjy3HfQQK5i5SNrzEAiAqKNxAh8lJm6ne1liZEoU60lFiO5enyAHsJoAdB7qJbw=="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"packages-18-east.internal.npmjs.com","tmp":"tmp/messaging-api-line-0.1.0-2.tgz_1494584342048_0.15588998538441956"},"directories":{}},"0.1.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.1.0","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.1.0","scripts":{},"_shasum":"90794306d3db20488a24384407ee8912106f3412","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"dist":{"shasum":"90794306d3db20488a24384407ee8912106f3412","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.1.0.tgz","integrity":"sha512-jBWGHbbc0WtqKrreftsYE3jMIIjfXZmFXQgyCNza326WHEGZpU9NfQGgSIrVk+qdbLaXE+nT2g+xjJ1UkxKZaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEsAQj2LkjdTDqjC8OI0cVxN5ZWlJNU+HyjyJkG6Ga3EAiEAjdOJ3aCtlMHrYUx/7E1VjxVehDfgJSFbPxV2Zvcv5Sk="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.1.0.tgz_1498053770715_0.38964604842476547"},"directories":{}},"0.1.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.1.1","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.1.1","scripts":{},"_shasum":"5faa382b81baa553e3cd66bddaa20436f3fa7d2f","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"dist":{"shasum":"5faa382b81baa553e3cd66bddaa20436f3fa7d2f","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.1.1.tgz","integrity":"sha512-W8kqXfofXzHZMVisgs0qYRZNMPyrR9nwDAjdFobzpyyqQDDP43wNtmxIZUuhrGQ/jwl0PiOwsze5kjKOtUs/yg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAe3PG+KH/QGIL82iGKq4eQSUGO1r1DP9KBsScKf9heQIhAJxTohDcBHTuPbfwRlVfzFfBUdg1zYGFNOXORjOlIG9X"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.1.1.tgz_1498117420238_0.18829157552681863"},"directories":{}},"0.2.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.2.0","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.2.0","scripts":{},"_shasum":"bec0cc3d1e6d821f247490d0ddd41813a01970c3","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"dist":{"shasum":"bec0cc3d1e6d821f247490d0ddd41813a01970c3","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.2.0.tgz","integrity":"sha512-CKq5BhOdsFGrs3eSdXmhDywwJC4Rb9GjPBEZBbq8fFzA7vqRRPJeFgjZZq3AVTHdqqKUS8IABRa57Fh7FGa3Qw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCFsX5WKXElnu9gNsCLVS3zdpnYRKgTQ46X6UjDfLetqAIgKrsp/T98XTybH/hF8Yv/vplGoSczhBe4E7kcnI+8JgU="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.2.0.tgz_1498723683260_0.7354138656519353"},"directories":{}},"0.2.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.2.1","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.2.1","scripts":{},"_shasum":"5de6eab056b6aa160b37e9affe59bbbc7d6a125d","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"dist":{"shasum":"5de6eab056b6aa160b37e9affe59bbbc7d6a125d","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.2.1.tgz","integrity":"sha512-y/r/fbNDZmynCVSDzqKMFQ9C04SCrWLqvXe/5/H8mUyWR8Aoisg/3gUlvYB6YgkD/vW7bv+cD28k99gLAuVEog==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBdUFwrAiQspSGNMnyAuhKsvdUDMa/n/2it7smva9AU2AiEA/P0qFb51QHUvT3YsDZNbN6/kklVv2ohSAqql37Uwld0="}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.2.1.tgz_1499317638002_0.41050625778734684"},"directories":{}},"0.2.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.2.2","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.2.2","scripts":{},"_shasum":"2d2665e0de657977ef3eca6aba0c7af020a35a1d","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"dist":{"shasum":"2d2665e0de657977ef3eca6aba0c7af020a35a1d","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.2.2.tgz","integrity":"sha512-1l0zfgT0IZhsMN5hllKQCXiJRMDMybpuP6AzDRXj4f8YdCjDi1a+o87I9qVU1EZh/Kay+cy7PYzfX3eoryOhrA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPPorDEiQA+BNLi7XqBFDb3BELDMO4fv2FNwRR2PGqUwIhAMGmptAubY8IY4rx5IVQ/57GJt2D5r0GoMuC3fbHrPx1"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.2.2.tgz_1499741073288_0.4840075757820159"},"directories":{}},"0.2.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.2.3","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.2.3","scripts":{},"_shasum":"df0b191789ae1824a145ef7e3fe05aa30bd0a6d6","_from":".","_npmVersion":"4.2.0","_nodeVersion":"7.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"dist":{"shasum":"df0b191789ae1824a145ef7e3fe05aa30bd0a6d6","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.2.3.tgz","integrity":"sha512-dcYcA0jzEp2xSxrWdNrfPJZNEABCLwKhiZZnL2oq7zkdFonSjh+EsTPTLX2YNse5Pp/Hd31Akbn0QPQUcw+eKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDrd6sVgY+KibS5H1OKUNIcx8FhWFlntAovhOWyvLviMwIhAMr9g5PMwk2PktEruz0/RVje/zOWOoqEyn8nnUBe/jvK"}]},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.2.3.tgz_1499927735818_0.8464367499109358"},"directories":{}},"0.2.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.2.4","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.2.4","_npmVersion":"5.3.0","_nodeVersion":"8.2.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-l4XwsfxWvR6P+I+1onoEkYYJLQ3Rmhg1aPRlH3OW/1PyNVqaVQDy2Abqmff4XSe9gK9L5SzE4mYMUGmPzcmb0w==","shasum":"4c0c07d73c14d7b0fccee537e6ef97a34a967187","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.2.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG0dnNDu9NpMX5AUs1vZxu9hAhHZ2LXPlNvicaLbErqcAiAY34VhFakVI3qC83sgxXs/u7hqMZ08yXz04KaRLGXFTw=="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.2.4.tgz_1501661720638_0.06559302168898284"},"directories":{}},"0.3.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.3.0","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.3.0","_npmVersion":"5.3.0","_nodeVersion":"8.4.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-GEVRve7hmqW/6zMtwHiHMS+Q8SfCo9u60vs6SaWWdJEDATQNxqxtpDwEznAPt4vQZWFSiIWlB2Q3D6gWERP1wQ==","shasum":"f09dadb5ab4c903b7f9ebf64a921f03fa548fb51","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.3.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDaeS37rdqW1+YS5idMNVjuSBiTfk+bNhL8MT4l0ECd5AiEApQ7rDVBWppgEE2NOTsTrGoHZsh/0g1jJ2b+VyYVAI8k="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.3.0.tgz_1503992208326_0.43767606746405363"},"directories":{}},"0.3.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.3.2","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.3.2","_npmVersion":"5.4.0","_nodeVersion":"8.4.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-4DEePTjeCFsR8HOaKp1ydM7HRvYA6HCMfvUUjFQTMibO02Z6B9XXE5FENHSsjuMAXBaE1hDz3+08DLcgWvvAog==","shasum":"6384113e1a53da9d73e0452a5e54e212f03ae995","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.3.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFopQm05PN0fIVymm2dhXOdl36TSI9WKO/k9m30/F5npAiEAhMPov2wSBLGx6AzR/hwtZlnZnV8xQcht25yL/3hv9TU="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.3.2.tgz_1504573928995_0.5753348460420966"},"directories":{}},"0.3.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.3.3","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.3.3","_npmVersion":"5.4.0","_nodeVersion":"8.4.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-mv+Wwum52pugHxgtScVo+qLDpno6iVfVW1Pklapcoxke3O6QDD9c0q+tjjnRWy/eNPEUWXhf5Squw7gtxV3PRw==","shasum":"d96a6f45b7478564c0b1aad08cb8879e9a3d2a65","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.3.3.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDuFGaN3KXmpOodJc+XOMvIaAvPnjFIiZ+3+jJGA7ZTqAiASScuRWX6Lb3qgeI4aJbAF+XbipNtjNS4soQOYyt72ww=="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.3.3.tgz_1504770548543_0.1286404556594789"},"directories":{}},"0.3.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.3.4","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.3.4","_npmVersion":"5.4.0","_nodeVersion":"8.4.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-f1FE4SnRvrRr+oSLAtDkRw5dN6u9jgrtrDP5KRvMQxDsVLp//Ot5pltsuKU9cAMn871S85DnczH4jUhXZzlKEQ==","shasum":"3624bbf64d56bce448b2790427e5cfb170d09416","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.3.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhs14aPzsrEXJuK3afIn2R1xU2BjTRFpIvrrZahPVBGAIgdRYbu5qpaAZ24FIcXfafjm2IjihBVFgandM7pwOzXbY="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.3.4.tgz_1505297683239_0.8052887052763253"},"directories":{}},"0.3.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.3.5","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.3.5","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-A3nG90pNdDC4TnfxuwBWgZVQPChI3qlPNQWvMjOdXS8byieYzVw6BBkeVpGoBpXvmqAWh7neVunIpGB2yjzAvA==","shasum":"8e5b995a8ece26b83dcfcbcebe490760ac2e449b","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.3.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvcer6QcFR3GY/hIbbVERzxi8o5CRNjPvp0GONovnxyAiAh1Y6jFKDKA+t4y0DmlQVKT3yxRHDmH83kL/hw6LuFnQ=="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.3.5.tgz_1505405717901_0.4883965915068984"},"directories":{}},"0.4.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.4.0","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.4.0","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-okz6Gx2CGdj0Ny7DbZJKlcmkc/r9RidHNS3eG8a+WUcfjXspWR0a8P9kX36xbKBhIHZ9MV0Y52QgnHPukFP2KA==","shasum":"56772b2f38bb180b330c48f1e3fc721ae0892b56","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.4.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE5zo4h1enkqu5GJhRGK3GvQaYTDEXGsXd+54l1MW9I5AiBH1yasOmluQFTygsdUYLVZbbIm6oKC5RCFj1lgsgBqyw=="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.4.0.tgz_1505817920321_0.13983918284066021"},"directories":{}},"0.4.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.4.1","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.1"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.4.1","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-FnNF1w8/BvzhtjYvYfT56g/6T8SWREi9tZGd+PJS9M9O8vqllP7tpnNJxd1S0m9N8kbLX+xyCfDvjnmGOFRcqw==","shasum":"74323886ab428679fc03ce040cd19cf68213b840","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.4.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6373jSpaQgGUIXJXgIl2YTtH+eDPAtfbeONN6QQ30gQIgW7LR9cbCuDy0GXmv/AQYOZC5+vggc6CWX8zcd54mmgU="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.4.1.tgz_1505819879856_0.07333999150432646"},"directories":{}},"0.4.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.4.2","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.2"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.4.2","_npmVersion":"5.3.0","_nodeVersion":"8.5.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-2Wy27APQXQ4H0kjHgamxYeTzJJYQ/cX7Iv6oLhhgFQfbeQtWfdo10TURKvOGKv7Ygxhb7sMPqW8gBMbq9KGPmw==","shasum":"68db4d0ed85ca10f6363ad7d9063f708a1479d48","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.4.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDgFxeD47Y+lQihQdpjsGoPW8fax34kxYQmR6JB4gXSkAiAF6sCWB9g06hMyY/sa/lPL8j56xhgTrcTV5jAsUSvFvg=="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.4.2.tgz_1506044612361_0.8391051949001849"},"directories":{}},"0.4.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.4.4","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.2"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.4.4","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-P0o6OBWNXoJBW/f4QAP6idp7EiSAv6/1738W+j+TpEpMa6YFKfvlx67LAa63GSDWfz2KeSWaFPNjDncfhjGoRw==","shasum":"9f45f67535eaa2affca312d122226df8a012d1fa","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.4.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGAQt4T1/gTyTkGH7NNrUoihUp2+rk/VtGx7xeK/q8bMAiEA8YQaycEN/T2qZ1Xv6lxXA3sLxAj+0lFcg/RXqtqZin0="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.4.4.tgz_1507709003863_0.9001399774570018"},"directories":{}},"0.5.0-0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.0-0","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.2","axios-error":"^0.5.0-0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.0-0","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-mxIc1HR3R7SGxGjBY7U6DkFm66g2FqJoy4CiOUV5XTBgHEH2THYkLRSWkbU7RlM+pGq1cHyH1lelkqXSalMang==","shasum":"ce2d83c6f8626e7bf15fb05c2e2021a641c9f093","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.0-0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDg9wamgUVTuoMUiPG+uC1b4KE5IsIVNuspO89hz56++AiEA2sACnSCE5vzoqH8FlG0mlsfVXrI+mW/nQP8EOHYiB1g="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.0-0.tgz_1508482616598_0.43952021980658174"},"directories":{}},"0.5.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.0","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.16.2","axios-error":"^0.5.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.0","_npmVersion":"5.3.0","_nodeVersion":"8.6.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-ydY/0vMD48KNT45Zftj8yxoxkoNFzl3dru9TRGh5vf8Wa6NOynv2d3/YJi1+oxJu1KIwKoBYJhtGII+pk1XjEw==","shasum":"c40d35bd4eb803859053e00aada04e6836697147","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCqu53kcmc6Rjw0WiBnHYaTJVwyMl2bPRVDWSXuqtGbAgIgfy7ppi2jbzATfAQmrTUXmpFmrsix55hSpCvi9qYO+4Q="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.0.tgz_1508483917670_0.9199370252899826"},"directories":{}},"0.5.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.2","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.2","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.2","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-u5DLNa5nDa//VXhIpA9rMC0kMUDPWONrQW38834E3yn5DFA27YipjaUqpIQkl5IbYcJo9btV67hhliIxFN14Pw==","shasum":"91a5a0514ff2f534e16efab40ffdcb877c670a8f","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.2.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB0Gh3oZgelzKMELxAy0TJHu0KL6u8EwV066odG8evPzAiEAiJ/3AfKh5uaLQj+2RzeM5PUA4gEnbKDgCSZM/YNNxaI="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.2.tgz_1508990949621_0.7925788862630725"},"directories":{}},"0.5.4-0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.4-0","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.2","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.4-0","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-ko3z6cpW7+KBKrfrMZiKcWeL06O/DCo/OjsO60pYoY9z+x0XgCAPaqe/WA5yASrUnTIFYjkpDvPqP62Aus7Rkg==","shasum":"bbc977fa0f1403a6cb9db577cc921aa55f488190","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.4-0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZBJ3Om4uqnyFR/3/RrkbkuAh8D2SHj+Y3nzCT1dcRiwIgbH8+QKrl85RVFxem7ZcTcKyFKFd3cAWTeMYiH7D9WMU="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.4-0.tgz_1509338501296_0.6712151241954416"},"directories":{}},"0.5.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.4","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.4","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-HEE5FDbfBAxt4eX4nSWHo4YlXJM2DJlzV40dro2Q/Ek2KePdvVZ9hSqC0HFm4wwdIQOkwo/mhiFRdjP6n8heWA==","shasum":"ae90e29bc89e6d11ff08ad41c0e9d324f3b2b9dd","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.4.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDuwr4dc97IwZI/xu8vW+Ji6tIdX4paAwugut7eKW40igIhAP4HCsl9hhs+/5XYUyTE1fHNbOay8X2WwGZYbLXLrhF5"}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.4.tgz_1509341097865_0.8730932918842882"},"directories":{}},"0.5.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.5","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.5","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-qetkA/pND4LMY4TXVUJw1iNYDNS8Vk0inqhSmdef6+Eo/qhA1LGO4CWrg/PfpCYqU9pFy5bu/oKWyNFa4BTJcQ==","shasum":"0f449fb1935e3724e0879b96f01ca4ce37066668","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.5.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDx1G90+Q+pRpB+H3d+gZdafRmcAy+Cdn53FJbYlpYXpAiEA63ch5l1eTPoWLUKfKXHuyV2za16G6A1S/yfqDuTTozY="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.5.tgz_1509525690613_0.9404036675114185"},"directories":{}},"0.5.7":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.7","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.7","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-VMPy43MbH9xYwlU3zzO960ASTtOrB1F3/NrNHFEMRpSTvTgBpPRGRAsScpizfvMCBKVkIAmrZDbg6o5i+50ZEg==","shasum":"15fc701c303e2d565f955214288017b0ab70a309","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoYoLDf3XK0WkYDv3qMQPAAzW8A8lnEkq0onTo3MIJKQIgAScHx6LYgeMavrD+xp0hWCAzJJsCFS+YnUL8ks62Bgs="}]},"maintainers":[{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.7.tgz_1510219996751_0.9697695914655924"},"directories":{}},"0.5.14":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.14","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.14","_npmVersion":"5.4.2","_nodeVersion":"8.8.0","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-Wywl3DrJo7y7sTnzaP5oFs1fPIWeOX1B7stxRUDxeqNoF8lfzvgFxUGwL4VKhGCEV1rwJBfj1f7dE+5XN6whcQ==","shasum":"5de8714b13f19569c455826edf243bc6961003fd","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.14.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAJhVnZA0LUe6MaClYcyVUCebPWAo3ywnDE9xkfogdzAiEA7M4OOmTMIpZViSHEo8Ai2ZRviU1DflWe5q9PUoMdIIY="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.14.tgz_1511949899849_0.4129822123795748"},"directories":{}},"0.5.16":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.5.16","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.5.16","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-0N7JVOWk/sdnt1dhRF3Xl1aEpUnKNQe71X8lMm+lbRwg+ifYPEHsbMZTopIA6Mr0F7h8KYokksIq6wnNYVtO0A==","shasum":"462f4dea99ba72fa1caabb62102a1978bda12caf","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.5.16.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICeBBtvalkUikq9gKumbUfZSepiv0qPB5HjehIUq9yaZAiAZDxhbbVVlZw9/vq4vxMoAx/zDRpa83tCtUUtN30a2bg=="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.5.16.tgz_1512460202254_0.6628290992230177"},"directories":{}},"0.6.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.6.0","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.6.0","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-6qAMZCrAUs+X2Wrae4dzeXEZobuEAwX74T+hz94WvWtcTjGUsVWQZzhPd5Wj+Vj8ySgXHLTrI6FB6tdqWdF+5g==","shasum":"ba646a3b5ab97f4cb6e2854e5e9c1202a65f25b3","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.6.0.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDlkarpfXfKjU5zGNfn9wLYt22Soi/mgZiCqPnUaQty6gIhAM2WWPxwpOYnZTIaYyz5HJY3bqdTo6Mxx28D6hQ1OZI+"}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.6.0.tgz_1512620025981_0.8590126617345959"},"directories":{}},"0.6.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.6.1","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.6.1","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-HK9mbwoa3gfCE2GsmJX3QlwlsULBSt+D/VlHSVPUICOyXJhap0pOOw24CgzftjgTuBSZ43Pfjjfai+2pH2t56A==","shasum":"e567d255354164465be5296b048fccacbe598109","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.6.1.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDl3C/Q6u0ny8KvOTS+b3Gu4Ql4odogxch17l4KtiIsygIgPuXb07xj4Zeo27rDd4lIa2Zlfo73BqoswPO3FNUS2m0="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.6.1.tgz_1512746360913_0.34856804786249995"},"directories":{}},"0.6.7":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.6.7","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.6.7","_npmVersion":"5.5.1","_nodeVersion":"8.9.3","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-oZOMkolmyg7df8wjWk05PhunReV+/dlFOT/JpBX3/Sfh1p0fw6L29NhQSoKOXqlJnmD6WXPxE9PEzJowwoWLHw==","shasum":"8c5fc0a4f192bd1f53c63829bdf2b4eed8693a88","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.6.7.tgz","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBIY1/LKTTggvFHstnduvoKA4tAkpPN0WA+r1qPY0waYAiBic4HpIq5MwU+tYrHMWh6iXUmmCSHAxH/G5JJIk273bA=="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.6.7.tgz_1513940270719_0.41844778158701956"},"directories":{}},"0.7.0-alpha.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-alpha.1","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-alpha.1","dist":{"shasum":"a0d8a8917e7bba13fca822c0b0203c58d065a30a","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-alpha.1.tgz","integrity":"sha512-aAVUth0nRiCBGrC0Xl9wcb+em1mUICdOan7qRrWonwVtb6YCUSSg1RS+6ZomVZYh2D9eupeg7bLR9dBA53/1VA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCiu3UwVvBNPgbhiaicJfnTaM8WO9o2tIRjLqkdTmuYAgIhALzBY2ylsqbmoScjH4mP7oaICKzs/IZLlbECXoOBVx3c"}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.7.0-alpha.1.tgz_1516602989023_0.502772880718112"},"directories":{}},"0.6.12":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.6.12","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.6.12","dist":{"shasum":"f5096fd2ca6d10225a7e243857e2cae3a683648e","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.6.12.tgz","integrity":"sha512-LyKJkyx2ut+eVmSxr3frNgvkX4l3U4jqOFqRVN80aduInz8MtJ3HG0r10db2/5GNHkSvQ9MvsqH2lHSAVSq9ww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPeKh+IeAMhnKMM0knA7fMvFW4L9pOhIHTuiJU7hZskgIgYRrYyYPQua2J0LFPCgV4n5/D4CzRH9jVsABrtAv5Duo="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.6.12.tgz_1517795979437_0.9799864422529936"},"directories":{}},"0.7.0-alpha.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-alpha.2","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-alpha.2","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-alpha.2","dist":{"shasum":"270676a784b86b250137618ec36f7fec6ff22b33","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-alpha.2.tgz","integrity":"sha512-OhDUKQKSCz4yDHdXEtPhK+QBwjlzkDhDJY1a20ge/Ndpb2qCexkhQqn95d042b1inBcbRwtxycydDa6X++LHyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiu0oVdApgg5XxGYcyFPqVOrXiFlKTz+I9TVEDeD1CSAIgEwGUM7mGrGQib06FuEP1rtu7meODBIgtDnqekfUvMzQ="}]},"maintainers":[{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"chentsulin@gmail.com","name":"chentsulin"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line-0.7.0-alpha.2.tgz_1517796321000_0.09507951280102134"},"directories":{}},"0.6.13":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.6.13","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.6.13","_npmVersion":"5.5.1","_nodeVersion":"8.9.1","_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"dist":{"integrity":"sha512-E3/Il/xGImo/PoEhTtohbSZvbaMpFyt4BDy3Y4YZmQ7KvYsJhGx/QQCHcg4s6bschcnC8RM77cs10xVk2U+hTQ==","shasum":"4775356aa805046099537d8dd87b45cd41f67631","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.6.13.tgz","fileCount":14,"unpackedSize":238058,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtG8iCF+n9MRZlyl+bx8WHmgy0pBpqbFUbq8L/HxWMXwIgfkdDbOaqZwVb9DPS0QLHL49q0ODB8RzUT9RbohRcbdc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.6.13_1518422608361_0.9171878544303833"},"_hasShrinkwrap":false},"0.6.16":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.6.16","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.5.4","image-type":"^3.0.0","warning":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.6.16","dist":{"shasum":"7cea70fd78aab84df91284f8a6f7be62fa0272e7","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.6.16.tgz","fileCount":19,"unpackedSize":238070,"integrity":"sha512-U3qureIhd7/UVgUEmp1WaI4hy6h3MCb1FNGE3LIouGbM7QSenWn2Y2hr+5XU4L7HfbzDKfk1SbR9hVzyyDTq8A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBR1/WI6HCrNfyglVN7Z3BvRQwhpxFfoe5Mz57DFMCflAiBzalAa2CCW/ovtTr73iXEa9cYTGvljqIzn1LAowm1rrw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.6.16_1519727807997_0.13184177246042306"},"_hasShrinkwrap":false},"0.7.0-beta.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-beta.1","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-beta.1","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-beta.1","dist":{"shasum":"b7bcafa1b5b84b3fde7831283576b7f8fc7cdbd3","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-beta.1.tgz","fileCount":25,"unpackedSize":404624,"integrity":"sha512-I30JKGHH+oApzg6NO0H9hMvCPGJ7P0zAD7jLdHX7ivowsR69JpWQOUwWhoGnguushfRVv9tOUfbiNmtFzs+7dw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE87Ho9b3x+DBfa22i6XppIdj2vB5Hz9oWLs4uQKdjU8AiBvbFnipVo2MTVpXEtri+Xb5BUfAQuh09Z6xBYPFBmCtA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-beta.1_1522054766495_0.1982485526001163"},"_hasShrinkwrap":false},"0.7.0-beta.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-beta.2","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-beta.2","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-beta.2","dist":{"shasum":"a6049e086fedeb59de3c6c5ec328c51d4c53d514","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-beta.2.tgz","fileCount":25,"unpackedSize":284917,"integrity":"sha512-CChF25l+riS7wIIrZCFvX3VdfCRw3ewWlFZmq3gaGHcrP4RrSCNePq6RHXKPZAWnZOp6B6bvAOxr++xiMCicNQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJFQhckSPuHip8hh3hg3hr8ogKd4DpRGxHfMyJa/69vAIhAMpwzY2rVEN4Gcq3YmXwIrfdCCjWtwa2GqTim6GkD1yn"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-beta.2_1522224539439_0.7191521098890519"},"_hasShrinkwrap":false},"0.7.0-beta.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-beta.3","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-beta.3","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-beta.3","dist":{"shasum":"bc19b8b49f265549860559faaa58cc7f0af5e5fe","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-beta.3.tgz","fileCount":25,"unpackedSize":284917,"integrity":"sha512-jsetAhWLxMY735g9RhUqieGCi4tW4ZC+hsjforXxcH9CRSEyRsrV5PlARtlyMDVgYmrQVzIEJRh+uOOcXOIbMA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqJ7ij6LKsUlHmOcTBkpxYnHof3SkUzRaV7Su694rgOQIhANvDjUwkWcfFwD4cC53Gj19dWYHx4uWhpYZ3f39lDkXs"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-beta.3_1522650419324_0.7497575699274242"},"_hasShrinkwrap":false},"0.7.0-beta.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-beta.4","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-beta.4","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-beta.4","dist":{"shasum":"8906a11044e4612f1bf0501f83b9c4727b415d51","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-beta.4.tgz","fileCount":25,"unpackedSize":284917,"integrity":"sha512-9CjPzWFV6t9tlrwOVe3m18irR4BHha1mnf2G0jwWStWbUFnQeamhPk6RDwqmpTjOrx3vZVOHDqwIcAQtLPm24g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAyg8MqqlgffCyvpaI1IFLTDTYYF5nFbUJO0yW5JPq6NAiA8K2hBiWnOR1+seKmG3z7knAkm+hFlPEaUXgx5+mKsig=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-beta.4_1522737598936_0.9088419264160896"},"_hasShrinkwrap":false},"0.7.0-beta.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-beta.5","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-beta.5","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-beta.5","dist":{"shasum":"135acde4f32bbd1aa15bec9e41517cd90e05546e","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-beta.5.tgz","fileCount":25,"unpackedSize":284917,"integrity":"sha512-us9DUSkWRhmnfZCzejQ+KkOe8ulYdeVwAsq/w+utMtx6XuyhBU1sk/aiZ+GyNmOg4bfq3ihlgHAMaN6Jq6VagA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzHwxw1oojXasNDmtnTidsCO6J+Z/KvrqkdB5YY0LLfQIhALsiGawc5l0xP0t8nRX2b5w1NeNLq7pkzqs4HZonTWns"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-beta.5_1522748375668_0.45370037136794394"},"_hasShrinkwrap":false},"0.7.0-rc.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-rc.1","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-rc.1","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-rc.1","dist":{"shasum":"eb557f69d62842ec32a7af91938e27458d1ed7e2","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-rc.1.tgz","fileCount":25,"unpackedSize":284913,"integrity":"sha512-vAQZPFN9Ha0sKgJdq3Xb0X7yDQo4ce999ncvFI8npvlZN9CFUqXWGFXeUWCS33G3eW2aoXz6cnDf+f87fbYtrQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn3wSEkj2cmwvGf8YkVuLUNFqOtA1CYbhugwl64nU90AIgOWWDlFLJMP2Q4hvIM6RT7wMEyGb9EK9jqoFMtJ0cVdM="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-rc.1_1523261660711_0.37697977304628827"},"_hasShrinkwrap":false},"0.7.0-rc.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-rc.2","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-rc.2","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-rc.2","dist":{"shasum":"32c6df70a4a6b1f3680d71d7e6e608fe73b43ae1","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-rc.2.tgz","fileCount":25,"unpackedSize":286654,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa1XXuCRA9TVsSAnZWagAAlqYP/jUXt0nonDNjhiYv0Rmk\nkJpvljGyACkf3LedQpvn9fQVGvRTEMGQxwr22ufcVB2raN+GyP7RjbSW4zpr\n/3mhoEVgdS78wZ5+gMa7XictFsOfBdjLDvGDuRjMpvPj5zku2kS1CS68ZnBB\nCAzVGa6ZL/829Fe3th9vuwnXIlhoTmyEhTZu90Bz9Q1js+zPW8pBveu6ywmA\n+sabOKnLyVjFiVWmBXtek9jMjWv+X2AMJ8yoPhHFqGHIUs3HKXDOo3ghfbab\nyc3cMKRsA58RAJAWXTMvKnbXtUf+LQBYVVwIg0wHdB41QtJ/03e/6uqKgdCY\nyrogXhySNLrwG6Lvdot4vO7xtE2g6m1PJ+JegAqDNgo3IbI/JDRxRAeALJks\ndx4lhRErvMNE46kNv4mCzO+9/i3/LxiNGfFLvD33+IQGzAy8tgOxlkeVq6DZ\nohcynR+448FxEfT6i5tDIut3bF3IiyOyKbvMixsbn2at7bpYWyTQgNKB9zxh\nJJXCcJ0TaW+AuAeIC0hshg0XzTX6mEIHBjMswzgkAh6QUbhOjlutKLg2gkZV\nIwIsDcGgQUAO3ZLfxdEV7LDSeHPwemYrwEKSw6miK/NILE3gH5+UmUVKXD/n\nXckZhzAmbiOPYBHhpdMm7d8XlTTTxlJNgUh1bhToYisD5HJJ5pAXtH2Ot4zx\nXaz4\r\n=GEAo\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-+F5Z1dVtUc1nv680oM2eOwlN5xzSkQB9s7n7tsBLLEx5SU3RFPg9g5MQs3vmI6JL56DOS5vBkg6oNhYy2XUcPw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBqMHrzupYCGiFPQVt+7xWjH4S9hkqgvDfnlN9j/sbAxAiEAt+R/sA70aq4y/G8nx7vsaWoNEvQvJBPSjP2wjNpwCgs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-rc.2_1523938795935_0.4859569419856986"},"_hasShrinkwrap":false},"0.7.0-rc.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0-rc.3","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0-rc.3","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0-rc.3","dist":{"shasum":"b7dc270990a57e2099e805d5ab46f6be4b979f39","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0-rc.3.tgz","fileCount":25,"unpackedSize":286874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa3qoSCRA9TVsSAnZWagAALC8P/1AiqhBEIfLLl3Y1p2DJ\nm7TZPOFRNuwz/ZEGtIxUg8d9Hkl2CdZC0VezrvDKac8+sqKx2cynAloen2ML\n/drxD5bcVQZFuOS0IFQW9jwfp0Q9KOFqahYq0qM1/6SUCK295b6n8j0eXr2s\nLkOkYd1X1oyIB8EEt9/CGAp/tUAL4s/m5wKU4xnUizwJ89QqcPnrB0gBJA9q\n3qLPG6yz1w+NUEcqiks1ySqoTSq0KMz7L5oiLJc3lV+L1/RZMxU9UPC1yQgQ\n7GBvrYVsjAbQUfuWdtLwisNuX/Icr+1q9F4Yekz7eXplg33Jce3P+iIZ79jF\nvHhNrnQzRqdfkWohJm2gSn9RoG3JGtFjD5F46eLH5rzHhHuU8QXS4Mwas8WN\ndFT4/e3Jn8uJ06br8rRWdAdWGDE1DWJ7f+r62wj/FOB7kL8fRLCNtsrYeYXM\n/FbXF6XrpC4r5xAkajC11jUsNnvaEZsPnDpPRg11hbVBCZBdQOTBY/m1gH5X\nJnm2Srk2JUiuRamYDNouEfiDK2kWsHd2Z/KD5UOGkwDttwP5ekVwLWtO3peP\nyHDtqeYB6gQQfjCiiyV2dYiGNrZARFM0CC4PdlSEmmKh8IMkaPL4a/J+9H+s\nUpojIkKep0xxnCHdBVK8sJRAc3C4HfmmLG7sqxO6czdMwoG1IqaG6I9b9EzR\nzXmx\r\n=6RVd\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-/d26q2GjNb88SxqsSAa+aU19n/uGSrU7IDq90cPghnxNzbRZSAv27sncrX3nD1TvV93j187+jxm0sGPOijFoyw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmWybfuNRYF5UhlTH0gGgAggfzYz4OHuTpghyml5oVsgIgSnskfi3fveIdF27aHbgVMrxk23PFL2RQY2PaKo8Pb2Q="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0-rc.3_1524541967181_0.5367592714209881"},"_hasShrinkwrap":false},"0.7.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.0","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.0","dist":{"shasum":"d6d2bfb3a095114f568655f1e35c450463bcd155","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.0.tgz","fileCount":25,"unpackedSize":286864,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJa4yX9CRA9TVsSAnZWagAAi0YP/32UXTg8aOQigPAcwV0i\n8Su3phe/mVYASjM5Twx/Lh8SyL8byzry6Qr+NJ7se0GBKqaw1919uK0xH18U\nT/2TzXVUhDiTAjEhj42fw4iH6Jejy9mBlJDCWzH1aav4MHNe5oficNfh6ZJs\ncMudMcsgc5XuCdMMTyekF52oU/MYiNwKCI6BIWzI6S/+nFXE4cbOS2Yh0LK0\ncsdVG1Z1wgjv422OJZcjKaM/4wzXd/RtfKLRh26iKl5R7hGqVYaXSdjhrnCS\n/Tt7opaQ+dRSy46Hkescm0vRUmz1MWrxRBPJx2RWquWb6UH2zDEhAskWmLY2\nOFxtwImyu/fsusJALetrx9DZUoHfiXYrg0Hu+i3x6GCQhLEOBVNJY9Jpmjt/\niWfxQPA5au7QYHn1houPSTFaJQbWMaa/sYjIZEr2LH1H+RV/WFddaPbEYhn3\nULcvmdXiAKTf0arLB7gfdXLEr3NW6TTeoZCXRsxGrH+YSoyfetoAWlU/sZwE\nh29iK3aZTPcq83GsWvQ3nOIvMOW1E7Eiw1y1vO5I0g5K9c/iwtqiC9inFYfS\nx/8Xh3rmfKCQNnLfCrPtV6kTDCZbi9CzPey4kdgeZz8OIiBu6/h4APWMxUOH\ndv1LrVkwmadq95S08nRwcV3C1Vcjc9aSOUQA1qoUNL+MAcVUC7r+ToJHWP9q\ngXaI\r\n=qv4L\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-d2rZNl0Zl3oXJkRzwJ2q6WpyuicHdf5+YIy31HOafiFv1gC15zG9m2nNK6q/w7Rn9xQ6lnVfDlTejF05M8AxLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAgdtI2R4Q41i5OChx9J14z2vrrM5YafWzk0ESIUt05AIgXjceTtpQ0kJZ+pvLvXX/Gx/b7EWdjbabo9ycRd+F4bc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.0_1524835835116_0.2002220242230872"},"_hasShrinkwrap":false},"0.7.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.2","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.2","dist":{"shasum":"afa9838b57f96934bda9104c081762094142083b","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.2.tgz","fileCount":25,"unpackedSize":287492,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbGgHsCRA9TVsSAnZWagAAF2kP/1Z6xf+32lecxdu1M3yA\n6CllsJBZfZJj/3Jn5rEnBHZjrKogitlx4qF2fhYcYbCS2kN95YMmdXeWyBJM\nqZGSQybpQHswg8/IZ15/sJrRforfEojwnzSz5+2yrGYoLdaUZA6WPScAxj/l\nYkpl/oItrjcdbF629z3EOHONyYF0t0OLnA8XmeymgZk+vZU6FH+A0MZsx8Kl\nzANSIPaTZ8s0qc2RIM9xJAnMIWen00gLgmQ1NWItaldvDFwpYnrgnsNbyahd\nkqvIq2qAp5/coXVjOPYwQCjl4djQD/y1asJL5c9ynqADcyUj+WeJeiF+y7Ef\nh+65mqMzID6ncjKoaP6vuikRgoVqlsazqLipNSiC6TE1GMvSWCF9RdFrQ9Q9\n/Aq/w119Uw7HHZs+7Tnptum1sq79mI3oE0svYyUruXsjn2K4zkOKmCo+Fyfp\n+Vxh+80m9Ha5z4KUxEbGOArswAkPr4N8TF0GJm3dkIr+ybzKAHfaIP6Kq4qG\nJDffrWz+mo+QEM3M+y2Umi5ZmihkXx5HiX+whEWGpZgGwkorCOei5DFh/Eyd\n1gAPTtJNfzN8QgOEAKA7q4lOKR0iInRopndj8x/xxQhEKPyeG70eKek0ny9x\ndgHOtVUIkgfdr8HuraUmkZBdHcBn4y/yompCewpqpbbRf7AUzWo4r8PvUgEo\nvCYJ\r\n=mFLd\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-mYBgkB76U1Z6kYIji8f/3jUdhBmZcNAzx2fzOOIcogia5GBTI7RbibNPQKn22lU0VXQ4D7i4aUDDCy7M3asWQg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHk58hJyes/Kx7wqrgV6vXat6+QOq7yAohG21XMzZqn3AiEA+/wJPnId+fsbjkzGdh8Myoc2vnvKgT2CgPlgCZdAoZw="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.2_1528431082514_0.006445984580950581"},"_hasShrinkwrap":false},"0.7.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.3","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.17.0","axios-error":"^0.7.0","image-type":"^3.0.0"},"devDependencies":{"axios-mock-adapter":"^1.9.0"},"_id":"messaging-api-line@0.7.3","dist":{"shasum":"e4f16cf154bb3a1b0c197779fbeeb21724f32e50","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.3.tgz","fileCount":29,"unpackedSize":314686,"integrity":"sha512-uz/Poomn5h7+E9paDFMFxsZU026VWEN0f5zsDG7wY/OHNx/vWUsP0gdnBuxRH9MY5vAfvOUtrjRshI9uyESn+w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZP/QqqfMK5uZsBlDltuUuS4Hum0UYfI2xE6A2cHx9EgIgbrOI+g6aZIDaNei0uOfqqZvIApv6PAdyGpbQiAWgBAk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.3_1529380804527_0.18967395491036232"},"_hasShrinkwrap":false},"0.7.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.4","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.4","image-type":"^3.0.0","invariant":"^2.2.4"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"_id":"messaging-api-line@0.7.4","dist":{"shasum":"5d83fdce331097faaff50bbcdb58a42905525d1c","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.4.tgz","fileCount":29,"unpackedSize":315046,"integrity":"sha512-enXICj9IGDJ34fgF7r/xkVhh+cpOwSiGBfGU7PET3Mgk74IvuTCTwb8RfYpGA9iJ0AfhHgfi91FcXhN2t4eufg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGYcggmQUO5fBv6UbMP3HwGKrsOfM8cyaHWKWtFWwAlwAiAbOZqgqGe2a36MQjIM1nbXJ0RTu2GcYjmTz/qRrHRjdQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.4_1531368908005_0.8894108072801565"},"_hasShrinkwrap":false},"0.7.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.5","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.4","image-type":"^3.0.0","invariant":"^2.2.4"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"_id":"messaging-api-line@0.7.5","dist":{"shasum":"2689c3d83e8cef099b11fe5355d8d82244bfcefd","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.5.tgz","integrity":"sha512-VKzm4Myv90k24aE6YahQP1ur13QPDtNkx9R9DlVJswe2uXYCHW8Grtp37WIzm+nHGR5+fHFLy/xMjomBlfTDIg==","fileCount":29,"unpackedSize":355643,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZZoOCRA9TVsSAnZWagAA/TUP/ArX/FcLsvSPzi+fgJfK\ntEhsMYZPm8gDOtDnkSwtvRe0Xp5n5SGo7hgx71RymLjRJtjhBvW+aKOtC84m\nhx8tvijshGBTMEVl/tRcjFJBQyRM40j9EOWdLrtMrT7iJtohUpPW2MolVmzc\nQixgtKXDZM9jKowOrox/fOwjbYlgCVMK4r3fhnDlCldxaEafvfBvt0HJyjuL\nh1RIIkZVP4bZBwyMHaFh7XT0Eim3sSmGthj1qU4YaW5i8nij8C2x3D/uRvvZ\n+5nAlLl/erbJL/KkFE5Kx0gn68ohoMV/Mmk39mtBdXh7WnTZZBFPXc8Dx98r\nNsr8Fvnka5rPURyyVIrfBofwS2W5ftzcVqFIKEyfiUaiMwlvVCaU0/qrmowm\na+++CPuWNkqvcoUu04M1WUsVTJdtDVKXtkYHDGs/t+W6Sj9FaA+Ypl74BRWV\nr1VKaCCmUxcA0wFgRWnfKTP5njB65vRJGdfzVhtoxhTbhdMdlcwLmp5f+rck\nHxBCqihEkX3zSX4M9MIdpkVT1/UgnwE3Tqpz0FcmXobmyaukeiqbYtdyqKli\njDHZRVapp0lS1AmQFelfBtRiy9RxeC5X5uMKZPInhyK0og3UUZS8VQELW04+\n+r0MFtgHj9fYfgCKGtvYtpRQdEyI/sxppwjhFkHjDAE51D6UpM8eqfsDdNFJ\nJ5HR\r\n=LeIO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF6Rvz24ckBfcUk4vQObw33Px4UZiXp1Mhtg0oqsfRyFAiBRVwYhOId/41eqTDcExxSCVmA6tXqLuQULuJhVL5d8Dg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.5_1533385229924_0.37821892799618384"},"_hasShrinkwrap":false},"0.7.6":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.6","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.6","image-type":"^3.0.0","invariant":"^2.2.4"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"_id":"messaging-api-line@0.7.6","dist":{"shasum":"bfd8b455382af5b99a7933162e201f9f056ebe1b","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.6.tgz","integrity":"sha512-uTiA0u9y32HSy+ds2QhbxXEie0rchNUrvlGeMVYxmilGx6PvNKUXOXLk8ON1zw/ZQrC/J/2jyECzws/wfXEQMg==","fileCount":29,"unpackedSize":355718,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbfl3tCRA9TVsSAnZWagAAzNMQAIP2ePFUo+oPgBJhkZJV\n9DqhKTlk1TAjHpa4YJquB7HROdbX/c2Yg6n1gsAvzVda2NyttGy2i6PlgbK5\neDVv3U3D4FvbUwsvvX4ipUeCigtvXgYeBKlOuidyQjZqskRPqCFBBRXvcp0z\nLuuvd9FD0jCrlkddSdew1Cuaa2/uPCM3VlCaMVpdKvIiciNDPohIZDCA8PQy\nyPqetaLeE1oubUTIMdPF/50Jhr47UqrDYdhElxFDyZZNyc4njoSXwr49hHp3\nh9brQlXrc6H6OkLg11IK0hfaBBAex/SIYXr92CbksXpffwxPlKP/1BJCC8M9\nmiTc2oioTOShpvjhtZA1SMFmMeN3tHEaNBUJ9zDQOxs0NsEyRFmX+Le56I9L\nP6fmwRM1BgrvWdxmXwhgBlf66Jg5vcQj3BKji76Q8lr9lWldnitfNt3+KzVT\nsky7M6mJHKS/km4p2vi4pcZFhAHjS0S9SIpyjCp6LMilydR87IYb/4Z3QH6R\nWtogdOXsGTy5w1AXOxPdBfrMWD+mFi7+OQqBjPovL+CS5+fCjBYu1BiLAOHB\nUMNu8hWbFrHtt9+Jd0oDPm++pRHVnloIR90MvFN5ORKm7cMZKPkNANxiLBrE\nXrRG8+1yAHi9l/SRq2mbX2UogMQZT/R4T5EIC+35ygHefAHQC17o76OVFq1l\nJE+/\r\n=wOhd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzIGdevHrpWri/ckJ9v7DbmQKX11Om5rl60hfY/B3dGQIhAOPvJfxQq6lBGwfP326UDeE6dM3gZtpkbDnJ2glHsizR"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.6_1535008236913_0.443691724696228"},"_hasShrinkwrap":false},"0.7.7":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.7","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.7","image-type":"^3.0.0","invariant":"^2.2.4"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"_id":"messaging-api-line@0.7.7","dist":{"shasum":"e696491c94595a4bc6692771aedd81f224cb4450","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.7.tgz","integrity":"sha512-sdJw+pyfFCI8p99B0/BNFLwfF0kmKfK7HOj7PikScxo5IjES95ok4Dcj5YY8ToNqpiaoKMPwwpC24LVL/eG/kw==","fileCount":29,"unpackedSize":356884,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbnh6wCRA9TVsSAnZWagAAwaEQAJEWa0rcerdV//zlOhRP\nsZVfyeElwsDMCIib/bxDXrn3wbYg8t2Gy8u4rXzFUod62j7v2ZpFqHufL5gS\njtD6Z15dJcIdr/Azgqx1LMEXhYFS6mvCEP3T63/fFGbraZ6P7boQk8zX7Gy/\nScRdo2h53lOxZn6v9D1d8ohHF3D20BDbjFLgiR/PR79aLqmvgXKlSOqAL3Dd\nHExiM4FVcRhMnuh9XlLxHuEwHSY5nj236/i9lLBaM74D0p/Wm55PpFRS7jP3\n9tQftVVjlQAHK2pEU0l5RYm5MM8qFKgQqHdMnQXToDXmqgn9YpwrQQq4UNM5\nsxKIkt2Fm1pSmkdkZwRx8UjSukFST6yUXSajvo1c1+fH/lGdy/cafe1LIkGN\nVXcQRyR0RhYpwwB+0w5Z8BqxLODXZgshuWAV0b/DugcUjWnC14WFsxacby3R\nal0Wne5+k0mGQYhKeH5DAuqAcWVVuZjK4DgNuKDVqFmfOdatjTHmjNM9j9w6\nRj2RGNtzq5uvy3bA2iO6Nq1RY3XPrqKv5Qn85R+NWytfbzgMergk21KusY/z\nqpYC5Ndsfe4clch16m4iDs6N/b6zFAPwFHQIzTEQwaW6JFEraXnTuRAg2mYm\nXCSxbSM/fvELtZ4aK19qx5hXlAW6BpZdLxHDiP5qeRX7Rqpz7qqbO7tmEkGY\nSyt2\r\n=hjYd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGghox7n/35528jYfwTgBDJlVKMtMcvz4pif/ZpaeAZTAiEA7aVLKuEQhc7o7JqUxNNtVD9GIP/zuU1SGEN9uArXhZk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.7_1537089198960_0.2966262632011667"},"_hasShrinkwrap":false},"0.7.8":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.8","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.8","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"9bcc48ddb1c03d7fc0d883c5c8e0e5421cc3a505","_id":"messaging-api-line@0.7.8","dist":{"shasum":"91b860e37099e8181aa8eeab47d1f97616ad39bf","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.8.tgz","integrity":"sha512-8JACiUj6Yblufr3K/+jrHGF/GZvxghL0Sc38hoghIkQxVBV8Avwn0fq2PFeEArxSekIx1qN2LAo0vlUL/mYfnA==","fileCount":25,"unpackedSize":362135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJboeWXCRA9TVsSAnZWagAAcxoP/1GbgZ+IvHtOkErLJ9Hk\n9qRJE4Kwhp/mIkXQlT6Z44i8cLPCC96VYbXLVtdcoZHymLkuyFlOiDIR150f\nK/dBpKYGd//M+v6orkEz/jlxlzWVQBS2KH0TMfLbgvJqZSrLLACOgrDKj2fm\nUqSkZ5vlIHw1UJHu+oBDwb9CCBC3/UKRdEbfeDYw1VfKwoKm7RrxePfmgOKV\n7ylEu8lcn1XvM0hl5nx2U8X3PGyODWmElRdRkRLZxFMD4dPAFFEROzvCWyNS\nyofJnDLwEjMLhMVMnEd5Xpst6K9bB26j+zl4SeH1lFXWIrd88DQjLqfx/c9N\nQNt3uTNf0aZrWXvDZ8gAb6rF+6FPvpvFFZTeZMz+gLkt4KVKI2+IB8knD375\n4GS/eUZK3ja/oCRbWDLOueCuvKeMIIAgVmWXh+TmPebnidUyNpT8JisAe1dW\nT7XEnsP0VYbXcUPEg5K/G+2AQPaeShbnjVmNHyxc6OpnZUibwOKlsIpUS+W9\n1h8gE6qLwvZdH5vo4sC82yoIs0oLLpoTXdi8lpMvnvX9yUDk9KdTYnWgLiOJ\n/iNTyg0j/J1BgILd5Db7K6UsSdxOLoRUg4b6jD9q4q3OZcjTTfV71DBGVGlc\nNoYi4Yp5SoSxWorfBqHMPQSMZhlSWETiKzP8r7ucTJAsJ1KXAzDa84PwnPN1\n8f0T\r\n=LUEO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH8eaNxW2jV/bIu+B7miMKkTtpnwRyMWOPInQT9EX5m6AiEA/rXWos0QFXCVG7FuSPnN0hfeqjjbIzSojVExJu80z7M="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.8_1537336725980_0.06490446537099936"},"_hasShrinkwrap":false},"0.7.9":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.9","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.8","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"86cd731c4ab275a65c09f3acd41937c9ab390d8d","_id":"messaging-api-line@0.7.9","dist":{"shasum":"20287986522d522f9b674b461226c626dd8902e7","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.9.tgz","integrity":"sha512-3ou5m5R77n7tW9GJ+P3s0eQCK7sKOwlyEBcOwrTNNGyJ7TdvacFsiPgj0f05yEmlyOG8ySEnbSXos4gm0XAFjw==","fileCount":25,"unpackedSize":365592,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbsLxWCRA9TVsSAnZWagAAxokQAJQl2N+QEJoEM/Ru+ksE\nTn8cK+ZNeLZrXvqcL4xWDlgrZrRC9txoAnuENtuCDueUeKL0YvmnnlH7ftme\n5gEZvQLfwlNp0ALEmOM4HPcNeoeEpokkSvqRDMwQbCVZ5lQ2Z+Pdq0wsLaXr\n4XiijhEevY0Vi/COoi3EBcOyu7+qObXNs6R3x9PjqTd57J0FqeqhczyrysH6\nXF1Zfr08MVBhDw7ghlLe/ArWcjd6KEyEJhdK2llfQuAG77idQQ6o+9+zv6zx\nVsqHwexKhRUyiflGZNZQgN3QajAJ5X+MwkK2PCgKWGH+JNkh67n8mh9cFIfw\njU7qUw1Ux4Da1apq3VdD6FFsf/KWT5SUKHjNquD1dD3rmPgjziUNxN47LCa5\nzXEZ0xzd4H6x5LpohIAe9nytH5JplA0qZXDOYtTSW0ssjRjW55ahY51OKtga\njzJ8bsoluIvMtlMWAqjznoMnFtLzN7DBcZjJeQ4uQNfCVYBep2HIPAszVLHe\nWwXaYgdmxSRnWP7SECRv0VdxNY3f5mWN+nPhVyo8xyYVIzUy38QSOT3PUPxA\nzepGP7MeUkx9fbJc+swlrZp/6asr+xPxmPNCVMIFTDc0mS3MC50Uz+pvOnaV\nBtN5wy5Ba0/orS6cOFsR6V21dKzvgogv+KoGlGNyrfb23sOOgtzb9HZECH1p\nIzve\r\n=2gsq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE0NL7er7vPsxXEzHAF2kTg7DghiOBjIXQoF9KVWQKQiAiAWOwXC23Bdp58nULQTjQgBDfB20nfqBW2fDOnq+9oD3Q=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.9_1538309205327_0.11937541581744915"},"_hasShrinkwrap":false},"0.7.11":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.11","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"8e43618226e9c46216372b813d24cae3bdf9ed9e","_id":"messaging-api-line@0.7.11","dist":{"shasum":"982ea2de98fc776982a320c7a291d80cec226b2c","integrity":"sha512-knlmC1Vk1qIBV8QACtQJm0ZpkSY2B3TAMbck79TKl4zD6SkH05dYO3ku13i1geEzbNSNkqzjyXDw8jSZVo+ZLA==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.11.tgz","fileCount":25,"unpackedSize":367608,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbx0xOCRA9TVsSAnZWagAAtcAP/1t1LPT1DeMKqRbvnRQj\no/DN2+wjv6k35iNw7KXkeglXBzQBN4uIjA2wJgs/D1cRnCM91XjRARyHTXvM\nHE3LozZMBvjXVd+7SUbauffrAiDXODY8aGcpguuldxdwKoXE7mosOc7nuh85\ntT/7lTlrzNFYbfa3JOpNZbkx2mtdclNJSf0YhXuj2AaAvdKNRQEOoLUQ4u9F\nTXA8gzqDef6YSXqSzweAUH6qI+QtsCdEATi7FXhWpm1qLfHxCOhxTpfmIprs\nbLa/kH/qsYVlqfJBomgcOk+iOM2//UENNS39qhQghH116N1W6VpDtL2AletD\nCP4E+WNbBJlPRSc7rpgzmIwmYOHyw58Wg0wmtrNLvabS4f4eONCNHhyr71ws\nH3/3rapf6/atxdWmjes472VWyrPl3ej+BgoQ+XKT7AcjjVKLpM+0Wqj/dXLR\noXJvIdq3aXyVLGYuKIyioIy+xzmCCGeQA405mBUYxPbKKG85ErqOgynLqM1q\nZ775jDL35AM9vq17Mtpc0zAIi0HLNxluAPDIyYvYnpesUQw24nl3Ho01jTgS\nFnig7mLq0vCsV43Pve5XmsnA6cSZH2vSzX12MRSdJ85vKrRXbYCvFNQ57ndq\nGoz+/BjNv1iuFO6RPJYLvZRC7tlC1lp0EtdZSrH82vRZDNx9eQAaVcLbeAlC\nqKlV\r\n=9QKm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMy5R/C3T9NjxdsQ/AscP+7W4mQDS0sF6NBvvhJE/8lQIgJSxBCxrFcw4ynfikLIADgOb4S2kGi4oHnOctFPFMS2c="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.11_1539787853570_0.11807203384500276"},"_hasShrinkwrap":false},"0.7.12":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.12","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"b10d41cbb0979dc7039881a93b7ae69939644ba1","_id":"messaging-api-line@0.7.12","dist":{"shasum":"d7f503aba9fc5d71d389a7f5a20af56eeab8c23a","integrity":"sha512-rQw9t+w/HuyoLE28+7z8leu5ot6wARiB6zttEgIAtF5tAtTp5mgqxiUtdxA3Mn8yRPsfN2bcF4QHCC3EUtTB+Q==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.12.tgz","fileCount":28,"unpackedSize":403135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbzo8uCRA9TVsSAnZWagAAGrYP/3l0oZT20Jt8YCRpGgqN\nZB/uns6b93wE8np8Und7y9TaZ0nkq9cC6ganSOWuuJmOvDlrH8ZBrYqDM1uu\nxwNaDK4Pg0JHGCykuNYmXzx17OG1tXHvnKf/omg36d2DOyBQxk1xfaeEX43y\nC5Pthkcqej8fwkxRfc8+Paj/6fxRpYJ1HYSoHzt8BDZIqN3moSysZXU1q+QA\nNeDwhIzzZGlWWNblqtE9NChbpW0OJJoyiWbTYq1rM7hFq1xc/KnKHNGFxDW6\nwGvq8dt603E0g24lRjVncHepS70gG0nDN2cH+vA0tkO8RwtYd5o8QsZEvxvJ\na1eBAh3cTEXi35Ei7hXRRsBCDRFfL5QKRF2qIdXFqMEdeQlSUW2VJoYGj9r3\nYQKdEVAGNrpzCOUaq+KrbwJWQ9teowoRtq0kqebZCrxVStvUyRmUmrCQCFIj\ngdAGbC4H2fXc2cBSDd6P2KsETM8kBba0/k0V6K4QnXL9RP/nko0WTqEPiM7r\n5CsRtf9agN00FsSmaEOsbBEdPklqKcq4faBilJkfKq9pe662BmM12QKbkH/E\n2/ew/lac0bSEhMKJqVzm9Nkc96OX5iHou+OeKa29HN3ricHwsQYtxGb5D3cb\np4EUWptxyhEbFb2NtgERlXeHSksnbBj0PV3qpKVrC3f/WwXx9kPRWmOI7BEG\nY4MX\r\n=MW7Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA/x1UZR3qW/79//89TXgMKpO5BZYv+pFU/+oDeUtGTqAiEA5wv4u1N+svxxmSfGp8UgaDLK4ypyxmUhmdRjjTGTlfg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.12_1540263724829_0.6791725811258018"},"_hasShrinkwrap":false},"0.7.15":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.15","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"e42f2e7c6d1ac1455b948fa1ef79815d7e7ba775","_id":"messaging-api-line@0.7.15","dist":{"shasum":"509e6087dd99beddce7a18d02209da57679459b2","integrity":"sha512-NJQMO5exyAWUygNakIixRmxYjDFF3WiRC6/UpOIbNCo5dEx1y5nxvdhzRoW+BPKXOlRE7ZETOjSa9veiTbn9rg==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.15.tgz","fileCount":28,"unpackedSize":423195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb6Wr9CRA9TVsSAnZWagAAwTsP/12jEfbMREOa1KC8pxw0\noHqQxfvsOIvfZEvvj2OhNC3gJ162Vv+NNN1DcB7F9jhihTCzBu4KM8tM1yAi\n9PD5zQlAys0sE3uf5oRYhcooBKg2vMi7rlnJ5ii713d3g/mY9oqhchhddL6j\nZOGtB6vx10uqe26E5seMNYrQkIdBLUh8iUVOMV9GWzP69IaiWr/8ia0s59M1\neIllivV+OZS4aRm/cHngJCY+lsm+KFjXV0fPWqjHn87/F0LbxRXboGqFKPkM\nTDxvcRq1qqQk4dwP5VzaHFj6zkWvsa/uuW+3kdcGsxpIA7puD/DinpPm2c/z\nh7haxEJRmKI90xXEmTxXMqkYfH8qQUDYcuvw2+F6IO1m8pga6UOLQp6WuXqs\ns2Et0czKJsvRRw9vRo7nWAqQ52t9ugxO23XHYCeJdNv7VIq/CG4CQjVQmA7i\nT7c2wm6c3lIQQpEp0lqFI9lPRhewLyGKsfGdahwExviIqRnJkdJcDOIzOJh6\n8ATsSBElOA2m7cMzx/Bqub4yB4qU6XktCmsOGNWIHqTGhlcKJlg4pAbeCoHN\nZSWYJEUgOfJ7RZkra0I79K/3WiSuEn2IsnixylcwHDZfuGGiLyObMFOYMTA9\n7ThfNoRLLospSEUprUE3inIYIH0n7q4ihJs9tvTLXDj4dDs1q5BS9f574yy6\ncbE2\r\n=fXEd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICLyFR1Z/wY2QrsGRYQEj4G+5DXTGwxVJZLJOJvNkzb7AiEAo//MbMXFpHG7gOSix5MUCUSsZtM6IzQuxsDqx6wvvB4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.15_1542023932455_0.9460746213385951"},"_hasShrinkwrap":false},"0.8.0-alpha.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.0","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"02dd12670dce24f37eaf3bf011e0abe4dd3f22b5","_id":"messaging-api-line@0.8.0-alpha.0","dist":{"shasum":"6673c7152078eaa19a2c42fe5be6a32b70d031f3","integrity":"sha512-qoU3LoDccesFo81fMQ2eObhRzrHF7UlEsIH15Axv79EK5O9UnirTtXzN+3pgl5J5hbh4QUbn8LL7MXYqlfY1sw==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.0.tgz","fileCount":28,"unpackedSize":573853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcIx4cCRA9TVsSAnZWagAAjfoP/AnNe3tG8HyBWQT7b62J\nUCUrQo++FkKXI4yr4YE/a32uCvgMfvaEU0uhuzjOLmB/b43kxWN3Ya7GgYb2\nYmYEN9rHm4PMJvwGl0harruHgz95XOLo3OeurBRoYarbUvbemagosLcIql4n\n/8Ovlakg1upGPhQDogmx5ulqq08OTrEZO0ilPzTE0ymyrkr/g86+6mthP/0E\nEsU4arUiaiKNnebaBUT6v0R/WYz02QLennHC3nlCvfRIpmL4msxf2ZvgjWuu\nVO2ZEfCnLruA+SdhB42IUoW1R1uDutf5AOeGsBI6ja1RDcm2hPxBq9c2HpFU\nIx8s5avO89O79Pjjma+Nof6vEZ+CDa/pYVOErzfxCQ0WRG2YdOHokCoVic5Y\nqwA5WpbsCO9UB9LG2cngCD7D2kyNlga9afRo+o5j7EC+AH9gEt7w6S36KxgT\n2wPPlYFOGlGYy/D7sDHeLgBERXNVqPu/vprF79ZGwlZ0uCnPl2lDKSCPlIuh\n+N7hy/8390BaWUBldbeVEsPvFmtK8YamJ8giJAoIbka4LhfkWeyHJ8N1lK4Q\n9XssWgXql8hJD5tiTxPBLoqs71IMdb1+8wM126p9sXQqxwe4zNLf7T1d65wQ\npyhrKh8l2o/+9JcVCi3gG2hFz5U6+ML930mdiefIgvst67wzOGbOh0nfO8VN\nXqwy\r\n=xJKo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBGy7eitNqmkVtKTFfaMNoUFkI7HZSqdoovDu9SagTKgIgYSCx1V6nfABeynuuoyq7bEbdSx4kc5JJXAflrAZ2HCA="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.0_1545805338791_0.3273292686537126"},"_hasShrinkwrap":false},"0.8.0-alpha.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.1","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"25786e1776d364de6a8a49e0f5b8a6a0da065ae3","_id":"messaging-api-line@0.8.0-alpha.1","dist":{"shasum":"9e84bf0bf71a695f383efaa7223719316549e763","integrity":"sha512-4eX+FmL83IlssS5cfFvs8KlNAgZg7fspKIaHnqi1S5rXU6mWKXVN57U1sGrlxr6wiIf9g9dj6bUzAC+9Zj0B8w==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.1.tgz","fileCount":28,"unpackedSize":573853,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcUZgxCRA9TVsSAnZWagAAFJ0P/2IZBwui0vjrXasUhuNK\nrG3ISARIxFShtKTyV05747UHLxYuW8RSLhxFhsBj2tkgnhickgmvLtgGe+YJ\npNpyNog6Au21v1pmYQnJWl/g2FYqKRIienyfFqefNM+TJ4/4KmrHplj4CbqA\nNKyxSv4keXMCvIloqBw4hNuMHtvye6ghhJSe/YjR03hf2/VSXW7NTqTSFucA\nUez/HY4P2MJWRFScTRpHmkdAT/3xKIXuTzjfFt5x/kxNvaIbdqSR2Tgjtj/l\n+epzmAJoKNs5cjie8QLHYqqVHfRyn3a6nUA6Uj9pq8t64HlqP60gFwzTPnAa\nRoBziTXwk1QELNf05ygc8ZLjUzxWcba5goJLTbIRCcQsOKvuFA3UN39gui17\n+5ZN2ToKUReT14ls15CO56SFdG0IthjataBeJEYqthogujifMd0ehEJ0IV3f\naA+m8YFMJPwCq8HtKG1GikFGiWZy+Qv6qhc8gktFVkp6SSTGcod9xXYQYYLi\nKEZwyEfaBC1bWwk2832uT/00fHtg3MVk20MF6OKWopgv1bCutZpOUAdc59oJ\nstO6Yy63I4vcFnD43bxLrqr5twIL3FiNcYLB1TVPspoNVIv8H2vRDkLTeEoF\ns0ILWYjTPjukRZta9l490ddEJPb6s8KxY9ru8cfmQilxzOOYVGOhluMz87Av\n1P64\r\n=Yu9A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBsbQNT3Q94f+UCH5V+E9GYSS/kFm5k55oxTRkVU0AYaAiBuViBvFrcKJAX7BDbYfF4CfNwKIwiZhU+ihjPbEKvt7g=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.1_1548851248704_0.11548738218464649"},"_hasShrinkwrap":false},"0.8.0-alpha.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.2","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"e62a49823a44daea60846201318790b1cf0e8135","_id":"messaging-api-line@0.8.0-alpha.2","dist":{"shasum":"4431559f6e9f1d50f7f52ee45467339820e9a2a6","integrity":"sha512-yVVgneX2PSucNtJxBEODwsFgM7PUuINqE/3d3KgqgQWzcBIBbhAoJlBnUZOum6r2sEaSvfiryzJQktFNRnwUkA==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.2.tgz","fileCount":28,"unpackedSize":576362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJccQI1CRA9TVsSAnZWagAAppQP/0fp4NMlZoSg9V20ZvzO\nTcO10pa/NRkzJH73eYtp+5QTu1oIZYYkkyQrQsilAO7mbqyjzB4nrCaF8YQ6\nnGr744SqLomNQ7pVABN3B1x+342FY0KHZhmLKLPTURR13aDhHet1zuxbzncB\nWSzBANdZ8KSTu1aQeHvZJx7RIS1oqJSmg9k8Xztz3q0aNIyyBbzSWPwgthw6\n/g8MN8Qcd8WgHGh+tzzHl++f39Fy/JcKQPUF+TJf/PIRhnUNANbRFwdJTQ5J\nzBOSQfvUD6HnbyDMFBnkCa7dbetC1xfH2E9bH6kmbAduxFTwV3uzDQOnjAIy\nRPZanXOLIg0JOAH2FJBi9mKa5EkWPT2AqldIvTMiQZSo8dVWP9KFPATcg9/o\nJZ9+epadFiZJCpxjcEIzZl0O/VVeLnj7SC6+BZsX6vJgFof3uZr19mbEFFrn\nMSby/7i5VP05hcThHmKxgjxZlTh/PC/oLCkrjUIkzt6YwuzFcKWL/ZxDNOs1\nP1Xc9TlW/GZnpX8CPFkTbcrH8j9IP3Aj26svSQcKdVBV0zXvVW1eHK7PbM1Y\nOdy8CSVINkA+Cwdf90Bj3VIcvafS2eR8lyx5/c09rRiTKS9QcXxlsIupFNIt\nuP3+6HjGktXIaNG6gk6fvUW0wjyQFDgri3+yNqTOis7f8mPfVmcdNATiOg19\nzXw4\r\n=nz/Q\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTy1SGwvWZ8KfVE2QqfhBINcjFbYjMkB+4NFFYODdmMAIhAJezAqFIrcUKfLWokqxPVfxd11qCQdjtjl2VQB1Ak16B"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.2_1550910004310_0.2927339860156404"},"_hasShrinkwrap":false},"0.8.0-alpha.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.3","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"df6a99567f7d6b7f8f85372e8538a1015885249b","_id":"messaging-api-line@0.8.0-alpha.3","dist":{"shasum":"7f6e991b70ecb5fd82d772771807b3091ec1614e","integrity":"sha512-vzqOKtkh7qDXNgQfEbOflvbrhsH5P24URrAzFg/9hksMEZzbYtnvGKqDMD537eQKQjbt09CIf2OhFv2zGflKcw==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.3.tgz","fileCount":28,"unpackedSize":576362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcf6j5CRA9TVsSAnZWagAAtS0P/2P1YBp3REArkfxMCM7P\nzl00GWKHSVWfw8a7wWB+HQKEw3Fhs8JDhncmG4AHmlCDRFgpKxY4ImZaKanS\nrPDP3hDN8ibOSTRyh936mMxoA5GfB0hUSY3tM/fJAE6GBbshy/4FHGfz95NC\nhYYpV+3c0JRqznQlAWAxP7KhazwCnDB0dkwLzIeeTT3lgZgstuhHyPALOVoE\naXzJP0gkh8E86CYUxxRZJ7JnqA0spnsN0eiEGJpHy7eQYcKAazhAJTYYZWSs\ntrYliTyPSUDRyBgICfidVAGMU1/Rn71HJKI65AmFfvzrOyMl4va3+z8hfELy\n3vDt8rrZhMkyCnwgzKUXDU+/J2C+1YOneZXLJBDZoKLHgiKitXAlC2WgCwCN\nGgax7UGMsStonxZi9gX62LzPh8tGlEy+hDfqMgRvUfrFWiRZT9yFwyeWISU0\npSqrzCti4a0zbaC5cr8J3tK7L7IclFgnYX1GPKzdlOaho3omS2RWbp5FfFhU\nEWWFAB+S3LjMCwbElfPKCMymfzX+7oFoqNnrggC0w9HheKDo5tTJTW3AFwey\ny4MOxV8oky7K3H0S8RS7NclbNVxU1JQG1LW5dSxwfx7b9t/pdLJhqcvA38KI\neg7pDuR9Gl1pq76ZsnHqyn7V4ENKcCpaEXk6gKK6nCxA/bkU1Yl43g/i+RW0\nzIR4\r\n=p76T\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFyTpUBSLSPjKykLXs1dpYzY8+kyTtDP28X3Wmh7tWVtAiEA0DtJRDRWZEz4Xx5i8OZXl6avf/Bxp0PDr64bMxvDTtg="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.3_1551870200329_0.09350490605670547"},"_hasShrinkwrap":false},"0.8.0-alpha.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.4","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"ffaa89b583a64f6478a1c97ae47366056d1bde29","_id":"messaging-api-line@0.8.0-alpha.4","dist":{"shasum":"9c2c1c2554eb7d2e97cb123014d11ce4ec84c9d4","integrity":"sha512-BKAnZ+AAe8ggNpjgaWso8Dy2tI4+HXfYm14g9fwIDBrLAQUmlwrGuJf/D8F/e0UPtwl/ATBBXp/bh2dZMHd+mw==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.4.tgz","fileCount":28,"unpackedSize":576362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgJ69CRA9TVsSAnZWagAAM8wP/R7BDGW/4ryjOzXKBL/W\nLWAaZ5cenuFbY89q8WQrHXy7ID3+nARzqdkNDbmsjBGppXnm6GlWJ+S4G7VD\niOPd1fV2+dJUEniIoT44EjebK+5DQzoEc1qSe0triZ+EjXbIw/1CepChS5FH\n7HQ82vavFS9nRpwyDKg4xq+h7cQLOMzqkiHaf7eYN4I97SynfQr9oGoBUKIb\ndxetpqTXcirwLGWvEKwIhaGCOlRFRPNNWfz/KFAcwpwrAp/E9h0KIlb3adV3\nYr/ZH0tUJVi7CMZzeBqzPoP842WiN9he54u1Qu2zGUZbWFezWYUn+sWdte9d\nR+x3FfnB04zNg39jvTNDEquP9zSEExsSMxj4e2TpmP/czS81b0nfomo9N4o8\nc39knqBHFitKBulMhhfIAHCnyR7NKGZLSi3EscNTtm96Yo/P7Fm2TbT+7ptj\nsyxGfWm8ERnDszdkxruGRWD9R1yj0Y+Umxu5AWYvAg9twewSGFWzgxjZFHzu\novdunJ+1bjaSJPA1fM9v3fYhu1PkwnNqNZZefKKOScTMw0SACoMVkOH7veue\nnD66ZCN1bDAe/+jiZeaRitSpCzYRK9UUoisGAXg867u4sf8K81SLDFxZeNQc\nGHLASKs+0/pyC6zSEXnrk6S17+gSBPZeKkeYOwbNwRc2ZiYQ7av037+1Dx9M\nnwRb\r\n=pfXD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDx878pYcqHc76Us0+mFY/WBzSJTPMoV9e4fyJOHbPspwIgNTOc+Ual8zmCHcM4E2jbjnbAUlomVTXyu7P/X5YpRVU="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.4_1551933115919_0.5432226524887773"},"_hasShrinkwrap":false},"0.8.0-alpha.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.5","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"a05c4572475a587733b046c67b970103dac64b8c","_id":"messaging-api-line@0.8.0-alpha.5","dist":{"shasum":"cb52e97b427d37e58a21172a66701e8146f2b00e","integrity":"sha512-fHX+5uCHzG7ujFGsz9QIs4gALu6tkYRAbUoYJh4V6ploa/Y2Hj1lh8z1g/rmhwy0TNoYyMn9BwaU00NTH95tuA==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.5.tgz","fileCount":28,"unpackedSize":576362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcgPoQCRA9TVsSAnZWagAAfEEP/jWyXTwRQZSj3o+8B0eq\nBU3xTf6x7Wd4phj3CSRhqg2NXqL6bCEQWgDeCE+Ig1Fj5VvZt8tZt+rf9dhZ\nAMqH6idXcEpOvXBfdHcg9YP7f8DDhaZclP3KxmJAD9Hp1j6p/6FR+TaCaZT8\n2BlDbr3L1WFWDx1PZxh5tq7F0lkuggti/KG24yCLPfQ0uBXrW5kP4N7weuE1\nTsfjXZnUdHbvADpixd5wbrCFGV92qaa/VjyI6wda8CgJwqVLReXCy937dCN1\nJHZQ7TAN5b4o2R9YbV6/ucgA5bNTKUUFhS0ARbsdVmCzx6eCPL0uPQr85f+z\nKcTsqUs7jN+rAt1C78Y5qvNAvvggCtoKWr/JyaZefTchnTeKlHqe794Z7eOk\n7RR31fCkL6P2Tm8cCfF1oa5niPYKGRG6V7asAWzvAkr6ANAChgh8bJ+nZR5U\nn3QezCIIGy/9u+JBo/yS34xU74cS/6iaxxELUnIuVAPddUYPipFLNNO4M7fX\nN8tyFoafye6c2DfTIeitg6XJo3zr87kiMA2I3JrFFfP+aq98OBBB964ToCR2\nuLTt/cQKdRq5Ohy7LeusyE2EsP3zZluCxJENtkOwjJBMy5YPILia7KBkaa15\nW0dEPJcQgjLhqvkMkDXvcvILl+5R5lnUecNtokhTUIUWWgdT93ORM7bovuzq\niUuI\r\n=f0pS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+RbXEoYHYAZ5vy+8yR453E2XHtrrh+hGhYObAe3nRagIhAIHPVNMa0yRS2M3tip/+1JtemGwBM+ZEKdCXM46milJJ"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.5_1551956495244_0.7836591682411971"},"_hasShrinkwrap":false},"0.8.0-alpha.6":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.6","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.18.0","axios-error":"^0.7.11","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"4cb66f703f9e2f5bf979d77a97342e95301fb7c0","_id":"messaging-api-line@0.8.0-alpha.6","dist":{"shasum":"35b5d2996a443097aa08801662fc8e116eae940a","integrity":"sha512-kCLXQYfbKt/lKwfbtTbEB+iPPqpGsHLKaezP434nMXmIY6XhG8jNAENlYoeSdjA7E5G3SNlf1bbr3/Z/XTi0cQ==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.6.tgz","fileCount":28,"unpackedSize":576362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcge32CRA9TVsSAnZWagAA+9kP/iooaYO4Fg+jivfnpy6n\nHowaP8tpS2OrZ9/KsAauj9miPxcJ62K1dieIwcEf1GSgcuqL5JPrJZEK2cTn\nqcPtjcrpm3thy8Dom7dyMLHBDGof54CAhJJ8oIq5p4DlMi8f7ONXQ88J8Fon\nZXfqKaOmPwFuzTGfwRZxbSowjalwrhlVuh1LjpDO7FpxocMuH8wTBcR337KV\nZJIOTYN5Yvlh1N/B0VpBZ4Q6tCHMJYsOJupe1ouvnCECiWFFsQnaaz3LBfp0\nJ36Rs4mAvCHvt5TA7sex0DV/mTQ8O6xoNbzT8gVAcIxIShjrsK/ZiDNg2p3p\ntU9o8g5zmwVIWrdBUDyGCe4CwTFzAXufPtiSbDHuN3vYV8MfqwMunxHQ58pQ\nraykH2arF+SDdD1L1cSc5qJZXVB//GK93vjzLT77dGGXtG0qU2Yl9enYHvIN\ni1ACIcKRVpV0WVnI3k8esESb2UWZLGlHI2KiskqeduDLY0Y5VCOWfNr7ewdr\niDl5Jre54qEFev7+ckBazwFsYmR2j7GaSNaTnHLIKRtlKvIMOnvo9RAMlH6u\nF98FtIBpe/+1rAQ/W0d77Ix5Dgqv2xj5APUbNvtrf3i341WV37wZUFtc1Xdt\nDTRwccd1bZ1wQTMjfG4xxvvJ8fEEL//S/vk9mdU9V2o0kFmpN7VlB6CtSdIp\n3HUO\r\n=xTn1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEOS1qpFPSZMgY5czEfiTxWeH2Qlmeoz+c0oBROxTu+GAiEAoHje7ocOQ6ShuIzaDUgWZivq0MF7+GIsWh8GL8mzkqA="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.6_1552018932929_0.1802579696495017"},"_hasShrinkwrap":false},"0.8.0-alpha.7":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0-alpha.7","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.19.0","axios-error":"^0.8.0-alpha.7","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.8.0-alpha.7","_nodeVersion":"10.14.1","_npmVersion":"6.9.0","dist":{"integrity":"sha512-cKx2uOwHExawozNA43vgxTdOZDz3t5jTBzBd8LWQeHsi7bM0N0RGrmEaaZ4nMQ5Nu7bIZJTRfpS37ONRyygsbA==","shasum":"1b65be9d6e5405ace71609f36d5f093a467011ce","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0-alpha.7.tgz","fileCount":27,"unpackedSize":575767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdIuXnCRA9TVsSAnZWagAATRUP/232dhIPRUGGkkebrUn3\nh0FbPhnNAflvDKW6dVjnR9mLvCJOrj+BbrNQdRFHAPNIxzG7Yj2Vlc+CNFY2\nf1W+rKbeNQAs5zdOJ1gmUBc6nRlj3G/h26hdnn6m/wTrSaO8IipqMIU52bTV\nrZAOIcCmN20XwEjIOmT7kPYTpftTXtNPKw5G+iEtgg23YSHf35SqEFLlOE6t\n5e+fGZiJan4xD9+Yv4n2hywou2h6cP4DLoTDAVma8RFsdFhMuR/0thBHLoi9\nvObYfl9d0Ez5qs0f4e8CwGQvLBmfzDVLIc0isUYGVzJ4zTsEMWtgh7QfZhBO\nmyj14tmCC0hrC0p/HJREsyEnb/ZPzBSTCyDqWiGGbPvHaIFpF2/4X5rr4CEK\n/REhLpCOgFQmZRFdSWxglxfrBD06bLBs731hdupYyytmnZtMmgvuo3Vo5X56\n01sZUufvGO1SYwNEX5G0uBD5oPwb6k2pyYfEzs0XmlUtJVEtoNVNxXzrUAyI\nAXnqUoOhdaoSmHCFJUxgLJEiUn+J3BMdV2kqyrab1y1hphWxLsoCoSZwIMz/\n/XcnOed74WGJDWnqIIeBSWO+zkw6bYCkmCyawmkvp+TadfIWe1svNl93BoN9\nxk0lGe9LFEE6oaG0GxH4H0tKtkWb12qA8fWqgTDHCfYauo/l8zO7mOCAu4DN\nHuga\r\n=eFQO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYqEsgLOcuDd5Ze/YiaVWqz0S2NEMVwX0b2goQ/2m0YwIge7owVwIvKtqQ9s1h28bjOWvxzjjy61GR4wpkNtjYcNs="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"kpman","email":"s92f002@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0-alpha.7_1562568166196_0.971515718140509"},"_hasShrinkwrap":false},"0.8.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.8.0","engines":{"node":">=6"},"repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.19.0","axios-error":"^0.8.0","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"62a2ec0cb939605bf01a6054b9ccce9f9bb8e1d7","_id":"messaging-api-line@0.8.0","dist":{"shasum":"126afe90020295cf64661d2420d2206f1bf49345","integrity":"sha512-FK5kgBZOdy7byXLVmu8rb8gcTC7odKTid8dc2xUXDnWLcfPDM6CYF/0N3Cf0E15ZDB69MIQSAect4lhPpcm1BA==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.0.tgz","fileCount":28,"unpackedSize":576924,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdY69ACRA9TVsSAnZWagAAsiEQAKFQws27WS6ax4CEVWZw\n2YV8sQBLtLLGT3FRL/cAZDfH5lC/ppBwMCMqw4ZHbo/LCN/jfnuHLNDd/E7D\nHz6XP2I3s+Y5zDCfjSXmhfIDmnu52NGQAEZW771K2LD9Hs8y62bFiBzddj3T\nbsm5S1Ifh98TYSYOWxDlFplnPGV20dSCvyQ5T0xAAx4WYtqv/LYdaawfM9y3\nD5oK+Cjd96RmVrt5NYwRA2SSR9mVo0+CO19zpMPIgu7R/m/5ogT3bA6kzd2t\ny4XuFVBgLvAw3tMY2VBXHypZIU7GyL7RFPRr4UISqUV2i8FyyL4x9KnIhJNg\nvfnA8AjbWIGw2GHncxEmkTnxxQLx9P9rpMLnaZ2WgvW2+KgK2lDly4d71KSg\ng+cp9odgA0lDFJGOjiUeya3QII6A95mJ26UEzPTkBwrCiGP8HN6IKwBG4sSC\njiWvsX7u0ObLAO5gjqtjrHueOXg04egmWs1AXpF33qVKUQDnALhu0m1UJiyx\n8ESVBPo1KXpTDDKu8lGD2PdBtIx1dSEx8mJDOYphtT/nFGnt4k3Tl54CkY3O\nhVFIWQsxqu071ZdxzHeXeTuwWGkShzoFfASF8w1QlLkGjJLSdPJJ3q8Kj7XV\nzx6yaa7e4kkv3gJRzqQK+edaGUYBRnNys/Nw5xLuZP4QnVsxyJzuNUp+FHMM\nnVhh\r\n=ucef\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDGYkk3yDTNQORETLFB1xTp8+WYIxnPMktuP89wWieLLgIga8+W9Jy/DG4FrIkaZVFkCyJMVMc72HVmccZlRPKN3Xc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.0_1566814015411_0.7417210673966248"},"_hasShrinkwrap":false},"0.8.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"0.8.1","main":"lib/index.js","browser":"lib/browser.js","dependencies":{"axios":"^0.19.0","axios-error":"^0.8.1","debug":"^4.1.1","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"622f5664634c26e752e4e54bd32dbc773271390f","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.8.1","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-2MKqQYeCkoSzCz8N/xxB5P8q+Rtu7D8aCSXrDeyaleeiLs+SpYWMMaAXcoE5cqB7z5Hj4VJKQUBeTGDxmHLffQ==","shasum":"c685e53d26e11882a43e179dc07deb46d556384a","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.1.tgz","fileCount":28,"unpackedSize":574733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdZKydCRA9TVsSAnZWagAAO6IP/RptvIgW1rGGr2jEeVYv\n5LeZ2+xfmhNkGYqh3d4e7optnZz6MLYzxwcfyNAxM8UeFtpdWlQVnW09THrV\nP0hUeixh7j8eyVeU9mfz51hX5D/LMfcb3w7LZHNvggz9Iu59tcWWeJjQY0W6\nFEiPPTFx7/U9L+62gMg2vhoAMZHZa+12Yvbm9IgcoHnk+FlY3MDwtXbuxlGX\n38s0bTl40DlHdHt+1f6W5aB0S+GOidDdPWxQYL3phhp5sswIFyNhT1NCrtxZ\nEVqkXHwt981VOw2BbHdrnvq+KH3MNSKR03LEgQm+NORVXqiW+rbZP1EOCVtI\ntZ4wLTOcgUbEduYJBTtUyV7DnzwmAyKN9jmUiu6Bj7hRxcNc3XZ67C5aySGN\nt7u+6gEfqxpmT1oC8gB/A79FWl+xc6+gnQE9iXKM1/mAfOIXeIGDRddwUZgv\n1qmpnKUZQr4GwniAp7iCOJALqcLkEVxHnP85xyuFxLHhNQYKmXSrCIwARI1d\nnh9pgXUnDnuH64suxVCjHYyr8GpzH8GcFqOhhUN7wGTwc57hVQLgyQuRv5fg\nIMuIWjXTbeT2n76+wUNDW+gB2vueiSXiUGSKkDV32EJANJXrTgDltaap/5hJ\nB9pQwrpOboEuUlFsNYvvrO5X+kW0y0vRqF+4FMVCb+9FYe198KiR8FZWMJX5\nFqmx\r\n=5Ji6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDB1RMbbIbO+F+uvQhe5ddl5UI3vcn2R3Hh6l7EjpMnAiEA3y7JDSU9gt+L+BFhDHGqPCs96z2yO2nZM+iSY7wB/i4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.1_1566878876816_0.17677510223996773"},"_hasShrinkwrap":false},"0.8.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"0.8.2","main":"lib/index.js","browser":"lib/browser.js","dependencies":{"axios":"^0.19.0","axios-error":"^0.8.1","debug":"^4.1.1","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"c17141765b6417272bfb1a51b19c0b6ae2c7137b","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.8.2","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-NTvYGFJsKOamPOW9eQ3rEx1YMMTqtfdP8sKqCavVPpnNC9TG++4FNxPiiPYkltwNlHJawxlpVXlFV46kPrAlgA==","shasum":"0d7572a0be7d356f40e3c99d615a2403464f224e","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.2.tgz","fileCount":28,"unpackedSize":574777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdcLZBCRA9TVsSAnZWagAANcAP/A/RDZcid1FOT7RHgshW\nZiKXrZon6FtNkWNDK3yAW4eOAx5duAlrqC0+GI1lu7ZkPXhft8Q8Qh+b1WLb\n4t3JUHuz+jTXuBOxj9P26t4ZoC9TCKqxpi7Ij1vuN3C6I4NRnQruO7muTXmG\n3HzsHe+O2iOIkk85R/Txv0iv/pjWJlVCw9h76bP++u0NvtJJXZ/CBR3PpNok\nijkIsvlRm6KJrmdUinX2RYKouyHts+/O1cNF5gCTY5NPdPfAE0klNhQYrkrZ\n+r0lwJYHiPPCQBZDx4jT8JgMnli1E5Pz31hqFH18D2paf9zTfgT2IhijpH20\n0IoxxlRC5mYsfx1MiqIPJ9vX018eJj/ZMipRJvcDEL6nW+8+GHGDcOit9m7A\n2tIWaZa7fLN6++dz1s6hBQ/iLwOSvs0zl/+u142iBoX2e0wVDFwk03ICtNn/\nvsqT0aCqWQMmcVkpSZ4mR+yzXwmhH9GXYT/70wBxRNFuxA0ghr8cD52QfUGY\n0c8mrDWR1SZxapI/pqQvtRivtODo9vqkn68XQfff0qtih78nJWSpzliGRiE3\nhTpRYbr1OIAeuHISMi0vTyXNCz2HDHWBJvrSjEn54UVbyvvYQbe3CmTKnMA7\nRVOFzW3sr/N4oDYt21aSLtvP/rjH/iDK7heR/ehtJmX+WY8OlFia2iigSKSQ\nXJr6\r\n=P70p\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/+ulwO6ohZx1Zy7vIKh2Urx15HftGiCAwNQCrVGunpwIhALlG0qZuozsy+bwmSXT742D7+p0JJsit4DENCDvTqz8W"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.2_1567667776744_0.42613936901730276"},"_hasShrinkwrap":false},"1.0.0-alpha.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-alpha.0","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-alpha.0","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","messaging-api-common":"^1.0.0-alpha.0","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"67490b1b2e7e842f4d1670d944d58a2bf11eb1e4","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-alpha.0","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-2wWsvQIt0ymlF9cYn1le9cWPCJNbMmf5KZKDjz0DIdNLsJoIFX5lJz2GcGQGpJnHc39rypWOC3ufhlm2tmJxGA==","shasum":"ddd2260c3395f7a6acf4ee549490b25656022435","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-alpha.0.tgz","fileCount":48,"unpackedSize":731071,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdeMI0CRA9TVsSAnZWagAAcaMP/iCMmJvCZScfmX6GrEh+\nP/U9sMNa0+/vCIkJrblAES/5j+epERh7wBRFuXuIW/glYGN4ICbb6MqTjC5R\nLdkmEoVQ0hRjmAOMP46KgM2fTaE0Qe52E8NdrOIggwXhssbRp5RwxWVEO1dg\nElSwcGPJE+D25L/OiCFbEIAp90eqQcM3+pRv4zNmtctVfSZwKEFn098eD/L0\ntVV8maYn1+kXL0rEyIC8RUkGZz8dGUC8Ey225BLHl2QZ/HNWZK7gKtfeRJMx\nZ9HVze4UW+UMDA/ETpyABHoSY/5xBOLh94+kbswU9Jldydeg7hicq062QfKm\nqmXohUgFEUx6YJ6TvUtYQhMs6Q+rrdgsqQhK2v3ICJYeQmdO37g/6+adqGWQ\nRmYp6cPwImpTMWDySkJOOrvIr6H+fpsiaqggZDBDoKRhho9CTs/1SFW35dIu\nPjM139n7MCXrclZ5TXe02e8YfiupHDlsBSsVoFMPGWTzMbkJwbtxGv4qn+Ki\njSKn1OJpPOZ2I1nJmLB6WTgFIRZWr0VmmjMn0s9mj2sRxjkLAHOnLgKVYEu5\nclgdicwsZ9Y2E8aMdZrK2ELuJhztIy0f8OH+J+VmRE7Kc0VTSLcIG3L3bnTd\n61gRa9/qUGcQcpPCcCPtN21SfkgzC4Yf/TGA/p95MEakhVeWyJ33TnA5NTpa\n1bc0\r\n=HmKu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE/YqJ4ZjPmM9rdBxAa0NLreMMM3HXT2UAbYKLucioPqAiEAwENEb7v1TL0D4jiC4RDyfLg85kRjHp05JHdMUScfOtU="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-alpha.0_1568195123394_0.1463191526669252"},"_hasShrinkwrap":false},"0.8.3":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"0.8.3","main":"lib/index.js","browser":"lib/browser.js","dependencies":{"axios":"^0.19.0","axios-error":"^0.8.1","debug":"^4.1.1","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"874202b421e7b302d84d9b039fbfc30b39a77ee3","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.8.3","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-EQRqW9UMtfQPw/PfnkFue7eSXZlxX2Ke5frFGhl6UHUW5Qfi4KPpvAqf2VTaU/cU7rGhGnZWuNbjoxkCWDyT8A==","shasum":"53344ba1e88bc91da5c03df5618e32a395e176e8","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.3.tgz","fileCount":28,"unpackedSize":574787,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdjvXJCRA9TVsSAnZWagAACccQAJ8p5JcEWcXcMCasvFmJ\neiuKucX5sY2ihjPhb1bWHnpQSExvhmgYmSW2hcIa/fOR02XyveFth9dWfbLb\n/Wx/73yMGFiQI+iuBd/3/QO4aRCXm/yKAS68K3O+v4lq3Xr5dq+sHHd7N5Mc\n54y4YDI56tHLGtdsJw0mrQSvbRWLRzilLVmAXjh28jS/Xuadm+QUuBgML+Lf\n6GZWG3Z8BZfQGz6+ID8PBP5mrlkwOy9NGAJZ2eyce1YH7qMSu9dMHTT4pExr\n16XpTmBFXPOusdnYEn922l3O/Z4kgfSB6iy1pJsvWc/P3WQZZEAHcDT9tEqU\nZogStapEF97X1ZT+td31ojGEWb2iaTXOie+CTG0/Vquh6qBfnjN3Iv5DeYr3\nGPF0i20ArQmGdL7+ZNsDQBOXL1QCu3gNDug/ZLKrPj4G6a3cDsVXGTcpSD2j\n6DRO4lptL0LtZ/UcLoQDIALbQDrek8xmwhA8VQpzm+OXzq5vMaPDYYPMbrQr\nCI6plqCzAoIUtSi6O2Oc6uPr1ajn7rvAwkJwJ07vndOuX2JYNmPrYu5QLN0i\nB8zxn26mxFaoA6RlyDZdbQgXfHOcyFxkEvPVHwnBkazBGpLMCI4cHWrC1zKV\nIvbvxUxXUnT++xrTMmI23yPBcORg3JnYvAwol//B64uqQfTGZngy1z2ZX4Bv\nLtd+\r\n=X5Ol\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIExcrdQgRC6TiMCD8zTV3EG5FtTs9ru5MMTk+c7Soko/AiBro4NvWU/XMphlAtrXOwtk4chiv4/kkgCX+GKLydeoWw=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.3_1569650120912_0.3060628571209505"},"_hasShrinkwrap":false},"1.0.0-alpha.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-alpha.2","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-alpha.2","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","messaging-api-common":"^1.0.0-alpha.2","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"7581219e17a1b1d9ab2f600e14f75b9714dd6fa0","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-alpha.2","_nodeVersion":"10.16.0","_npmVersion":"lerna/3.16.4/node@v10.16.0+x64 (darwin)","dist":{"integrity":"sha512-oju2j8+Kg3BZKHYXgF8p1RyJwIAJQFf5MLngnKJgD1cghn8PE3ixdM5y3QVeviD6J6ytn51bTKR7jj9mBhM9Vw==","shasum":"53b0a71b88926359c86aa800f436468c8ef5241c","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-alpha.2.tgz","fileCount":48,"unpackedSize":759545,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdlugwCRA9TVsSAnZWagAAqXAQAKOKBsGa5YGPtyQhbLNz\n33/6u8DeH3NRARJNtg6rWhipCINWmL4Bh42oLEmlaybRGffV7Wph+2VrNnvK\npbY4/vK6VYSVabZsm/VIIXt0QfQgOwRMrg6eOBXsqCAFMGi2FOKsqkeCNXe9\nlYBUcRt+lhko5eRnN0KVpuvZylM1zHjKVGAfJov5iJbrZjpYxN3Xqvl4MqoD\nKjW4K12fWKkjvA+n/fmO63zxZOY1/C6Na0jJg7dwGPkXqU/n2bAZE2VZf6Rk\nH1upZz6lIs51VJA6OQGrM8N2kVgtVRF0AFBDPjVlmQ++gS+U8Dxvd4rc9L9E\nTYfNar0J2/1l/u54XeQnJJRlnrE0qBlhpIbnWPCY/XY070YbIBxCNbeFzhlt\n/CYeDAqYrqgxatRTzlTryrKR3A0LUVoh+UQ7gquUCzL7jpablhnYbA/EImCg\nVoITO7YJ9DyUGIZPl9HG+HaBrTaFYJZkTXaC3ZMH28y+CasD+wYXwvYGFPKD\nM0eEtOUqP57aRzY/2VLRVYhtDcjpQ1gdGGrEFNef3vvCZfUwMRlDUwQ60KPy\nEN92tWjWUer+gNPccORXGu4/8djKU97+761mMGG75pwUSNeD7DA3we+l/woG\n8Asy28f6f05yxY3xynu8oFW40RqHGMBv/+FSr97gaWyCeMW3oxWMpc8mdPYE\nbGMp\r\n=XYXK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAWlZFhUJYaDSRSnknycWdcta8YP32NycqKkmBN8rGzUAiEAgwsamut7IFVyZgYOodw5jA3/5ql2dGd0KrbldF6svpY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-alpha.2_1570170927397_0.2867358378090954"},"_hasShrinkwrap":false},"1.0.0-alpha.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-alpha.4","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-alpha.2","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","messaging-api-common":"^1.0.0-alpha.2","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"3ba04ffaa1a5c9c7a2aedbe21242663adec99166","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-alpha.4","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.16.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-3t+wLTttUUKk5DUP6tZSytPhSGQg30hXA100Y1eTyiMUOwE5Sog73WhrHCXb75xSQZm+BHCMSS7qU3MzYjUBNg==","shasum":"5428f8d9e8aba393a3d9bb6730914f9b5360cef7","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-alpha.4.tgz","fileCount":48,"unpackedSize":759555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdyUMKCRA9TVsSAnZWagAA03sP/ixlyghVLsemgsiD7j5j\nLnNYKyXhw1RBczEkkTzLkUHeflY+MT+7SWLAba37I6s8bhB/yx93HM4hp0yD\ndylp/dUeZoDaWv3d+DTaLmqITR/L6W3LunYyhGic7/GrVB4yt933PIqcn+Qw\nBClmsPuRIJLD09YX0D3nKz5ZkLoZSFmFJoDx84Jh10FHBTX+mx0KWTkAqvE9\n9OYE6iv4MVMkIBphc444UdVTkFxRppQZhy6ITzuiNDgRznGU//qsFlTE9eZI\nsSv5BFG+PTQgKlqqfSGKGVAZg0qjjxnvcSeLTRIBm0wGEfVJYGdghG8nRd5y\nKtWcT+fdptHrUKfsYGjXZ+LAWgQSw+i16bv3S9xAxAZhUQto88Q5Dcw9lDmt\njx4Pn0feDRsSu3UbS/UBhAaaUWRvjFfID404cEFG4hoc4rJaLDE8cBqOy/bN\n3Kyx6IkZrwvlc3w7+kIeRs1xuAAO1NEb1rLu1NH56x+U7R2O/oW/JhIo25cX\nNDS2FQwWbt54squHGtEBZ65M3hqrqhn/V83ELOgl5CEQT9F5i7BbRL75lYgC\nXW46ZJDKPxUk2yhKn76EnAqc4OoDHhRC5X10+mjET6jbJwKKaMSAZEGsbGvo\n5XOVtMfh9RMUad9ZafiJp14/VX7ZKKL6QaaO7FJDjOzI3aO9vhJdJIG3eKBu\n5KXW\r\n=Ab/v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoi07YsLKaHnQZ2HcFSf5NXOsib6EQyJRKwgLEDgSwGgIhAM4bTuQqlLWcvvaEovEqybhTJmLY3Q/GLqQ5rhx3BMjh"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-alpha.4_1573470985948_0.960092973556611"},"_hasShrinkwrap":false},"1.0.0-beta.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.0","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-alpha.2","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","messaging-api-common":"^1.0.0-beta.0","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"96eaeb0fc0b1bf8799d17dd93aa4c59f1eeeb0f3","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.0","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-kJwWM1YI8FwMtwV4hv+BIHcy6ECPQbuYOp1kSlGnaNgdYCBJqF2/xjcSIsAWeAl5p5YXnZXzhzSLPOePORldug==","shasum":"b207e7feafc594b9dc9ebae6bbc899af2373820f","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.0.tgz","fileCount":48,"unpackedSize":759575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzP/5CRA9TVsSAnZWagAAAkwP/1TSh2RjQKpaHpwfgylD\nYIZMf+XPsYnw5tByiiOzIt2GSPLAejtRNodigzAIVDkojXnt6iyIp1zIONgS\ninnZj35oi5LSYOWAdKP0OP93f48y+wfKwL+d6qxH8Um/NSl6ESE8FLhsuukx\nPv0VDsDWL1GswjtAdBz7wAfpORmuz02yyt3f7WqFdsU+I1aSjJH0N8fRwD6c\nnKFqBm6z1uXux5rf5oQaXzb9EovTDlI0IUZkO8XVMdqvzGtFBNzZy+HewR/u\nio1EVRW5iqFPv+TDp6zImOVpsD36C5PUoUFy/sQ0zP8IHJzitDz4UGBIoXj9\nG8qhvGXcpi6hakqibh/5X9WXObQMj/rvgRqfQWjmahV+SVQwYEIV9UzRj9ip\nLHHC9Ro0fZhpgN1T4TVaauvRxac5CCyfgQGab5i5QPO5OeUPVbMKRacsc6hg\ndW2HgNjTZ7VUzlzIuPevTouckUax8XgfqHdF4qHEMDhCo/n/jOoT0fTtCQuq\niBu3BSOcYl4z2LfUQ6UjDAAMLoHjfnldOjlMjHA5twNp7bPkOA/qyX+az0xh\niBXaw20X28KnOqnTTN8XI5qlHDRr5ojd2Qxhnj/2BxGmRqsDmGG4hYgbxaqW\ntzFsW0plcc4ezu0GfXdiE6VgIWxUfT/aBl1GrqZDoujSMqx/iVGPTeAwzRwu\nx/5N\r\n=UHTJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAD97z3LP5X3w3dhx4mTG1XTFKqP89MQgEUe788n2/ZoAiBf6tCmYVNxtMumIPljcAu+0hZOnSXNGIR96yN2nqz3ig=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.0_1573715960775_0.3084776179261375"},"_hasShrinkwrap":false},"1.0.0-beta.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.1","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.1","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.1","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"c92c8cdb79d62893a7c07f5208a5234f7bfc00cb","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.1","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-yTNUKh3DJO+FDGse38lSnbe8VylJ3mkUFFZC5Eo9UU2C4NKtcgnOuPf69fB6ISAzhlGyWhNpAfJhEdCh+AkYIQ==","shasum":"28fc482f639bebb6710b5ef5a95bcb6cf0512315","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.1.tgz","fileCount":48,"unpackedSize":759610,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd0BYQCRA9TVsSAnZWagAAC1IP/ipu261JQ9pK13CbwjsW\nrZjckdiBuNhThuE8ptR4yzWvUuD9GuDn6uVLNHvNi+zQwpbdQyA1m+jWuSyc\njAmtxWss34cx4wOJbNPbnAjscVAHhr9FDlVmz6ayIALzkPOn1GAFXb8xbndQ\nl9AvhONFFWtvJ27w9rGifmV9soIJGvpo35zbZ+SEjzQ9Kv8o/ejAOa2GjIyg\nqx3ssVsCVLri6T0pdDxk1y9DJLdAy9jicwSkUN1ccZYBIF2YN3RggVQZEkgK\nX4rzvuHCZjJU3Vd8D5jcR6+Nbwp73gutoxefLETuDqQvspxDo2yAYBI+iziO\nOPOeGsHtVRcbrQg2kACuyqBuF5uKdyKH37sUt6qUk48sbTDZRVopVUJ4G1+e\n7+C9EsO6w7tSMIkiiKwFWb4UoHlpCOQJmh4pilnSwO/smHOZdqVTZmE3kSMR\nJ2kQP/imqbWaJvQE/DCloHP/A1O4n6AA2BVwSfb6WardG4lyVZqRYt0M+6PM\nEJgc54iFG3dfAvslqqjnk/HLsGz6UMNTqeVrTnMpcoTLQsPYh+IJhj/Qu7Z1\n2Zo9QCodX46mqDm0jIWXhAhYBl+Rz0jrfmg5S1mKtuWem8RTmqELmIFpIGU/\nSZ4AN8dXTVoBGHkzF9m5JZmTcC/vA9P+lpCynWpx2q8CbTY9x2SmeDu4JPIg\nC8Ic\r\n=BK+6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE5NTn/2oFtXqcBZDlnhCKxEoLfSqnPy1KsiBfsAEYaMAiA4EHZAlDXVsDC1f4EZaOyCf0Ixy6ICj7VH9X9KSG3j/w=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.1_1573918224351_0.37150428998478535"},"_hasShrinkwrap":false},"1.0.0-beta.2":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.2","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.2","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.2","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"142b0193efd5babac07cf7280545f7ea202deaea","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.2","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-kpi1Pz3quYAHm5gHDH3JAh8312if/rzezfICaC/8pU8I9uXuP+sPW6/nY4LilRqdN7QrjqNYy+aOrYTqCZvRKA==","shasum":"b44c8982e6f3fe5943abae91f3a795aa525996e2","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.2.tgz","fileCount":49,"unpackedSize":795146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd04OwCRA9TVsSAnZWagAA2ggQAJnh8VfKBvtnzWx77Lj/\nWdM1YTb9upf7YzMDXc/H4MhnPSr+r2AloqnLzNgNXNsFRZ5GA4KC3hLiwwYL\nARgJUvXCw+SfMUPCTdyO9BG4yCJhHltxP6NMQ1dphBmNLBW1qd9qDGEbJiF8\n91cBTHbYUiud/jpCgYL/+RgJ7f/y04Xcmc+asqIt5OgaeRzQ5JnehJ3Krx32\nTn8OF8x909F8jpBj4OxsS8luhZ4IgVVA1dTmnt7o8Zf6H7dvhBLP6pROxhbP\nqhvyjRdhY/TEkezpblMv3LkISqYhLSy07CakQ4op7a/0xeDVS3IBY/AnWABj\nq1Ps5qvlzmkSuYFt8rH9U0qDD63OT6m1/pTNbxBo3ew8MWHS+vY291x/HZhL\n+RYLwk7wMzkiXUyn1TQZIg0vNWFr6z5iHwvAT5U+MG77IlUVQxoWul7Upvsc\nN0lt2emtIpu6E8beUgssT7pSGoLXugnuE+j3wclgm+fkNMxAb4sWlc4zlUM/\nZW28ZOccmO6OZkRcsmviI70Bmzq3S6fugTf7c4gnYLgNTpRno/yc9g0PjOdF\nZKdVAHP4SVqpmAyyz55UZ1irkx0JfUKhkVlQBw8LDCzaQd/nNDsE2KkHJI6F\n+OdGEr0unEQMKxRv2j3Ls/EyvwVaf5VN7UrS+Jc5N2Kq6OZa/zI5Oo8+q5Mt\njC5U\r\n=eyzM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDk94Tey5amfTQ5k1Sxa0wZi3RMCHS1Jz5M0K9SSOzcngIhAM05hQoh5m1JhzopRo0qQgncWM6B4vV+IN3YX8sqQjQ3"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.2_1574142896466_0.5106849879073463"},"_hasShrinkwrap":false},"1.0.0-beta.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.5","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"701efe776414a93d93d709198a72fc80991f51fc","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.5","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-jB/eefNdNggFtLrt9qc8hEeY1u96+7/rKgFBrCI/+d0mmjzuMKHSULxZVTKQoUwtMP4p9pL4D5y0M8KbD3UQZw==","shasum":"d5f1e78761f7f75f07aeb73a64c3172ddf25199b","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.5.tgz","fileCount":49,"unpackedSize":795146,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1+qzCRA9TVsSAnZWagAAsWQP/RrtiWCMchzzGtwDsmk2\nYHBvnxUsXsOEOr201JVeHdXTaBzLqF0HLz+S4hp5tsa1nekwNPPHxYjKN8Ft\nWU2mPZZMtxQIyCCoEoqQG9PT9SFSZm+9HZMFecMDMCkx4WuaXwkhkXEFCKI7\nuZ0vX+Dq49g/TQn9P6IaYs5soro0+beDIhSQG3eK1GW1bRDUIu0I+mQxaqTp\nB9y5d3FQ22sYXmGTktcrUgn7AzaxA7095scy7QJOC0o3Spjtggz2PAEaGY1Q\no0i0MrsIUKx8Pm4CYdbz4PfVpdFYhRxa+1RFsAKCTMccM6dnonuJz9kO0nyb\neChInjKzwTPI4HjeWCERcYdgIQITogEv9iUIdPx44MR1bbhd2Un7JCc3pkRu\nD8Txj3bqTQwyhakn+Pu9ITqpP3E8In+xH493Qx0qNpwoumZTiqf/OqMeY18Z\nMXiV2OZT5VENvr04b32FFNkDXfUXvkT4KXlTPKFspFBDkYpyy4XwMqDSAyWp\nhHi+Cjw2mPjC1zqse/FrCFOt+yfaZWHMk8WV/4iIgq6ZVAC1VQy+1fR/Oes7\nn+MEuWx9r41IYby1mqtFwd3L3bYQVzxCIjtoDb4J0p+TvFdps7lJzvAAnpsa\nDXd3ccelHauzQuvSHFHQ+H9sYTAf+clYJKHl1c9WeoMZ0LTGP7IcFaYo1jc1\n4dYx\r\n=fL5X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIvX/oSNKgC6rrhbSGq2LOzOkoUM3fkL8RKcm8bMbwcgIgTdeVBHHp0xXfdP9EROFgtQnSd4+kEsrriN53M0SvTCY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.5_1574431410751_0.12611245530199877"},"_hasShrinkwrap":false},"1.0.0-beta.6":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.6","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"54fc93b7222a8a799de56f6d8282d1b0a40f9299","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.6","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-97FhU+1dB94DyrWNLIUAmd2wnGWLtIeLc/E73G88omCadviNH+TBSyYPoYtMphjpWocltxNbgz3K+nTMRWX4+A==","shasum":"2d956896b89e90b8aae30eb8924badb4d5b50176","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.6.tgz","fileCount":49,"unpackedSize":797272,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5fTyCRA9TVsSAnZWagAAOZsP/3IqlRrhHB4/ZlNA15WC\nC1eetywOm2KN63H5l5nOHJpgqMzaC34yS7v3Gkr6VapvvuCKN351qNXEcbuP\n7U1hiNyc6uB0Fc92tHd/INgXLAlvuViiLJA2xNZsu/TH2B/Vlln9EPsGt3/l\nScQgzTQw+z4Km56+ulDUofreUo+1xX1Hywf4UJFKvimN/HDhhgIIof7ziip0\nO1CA0YVujeos1dGAaHCT02g0Gk8oZTpdr/7Cb5W1xnMj8kLp6LSXJnx36cXH\nA8qULSahvx/Tb5fPx9dpWl8I3R3sNuKKwXKNvJ4t+IdAhoAWTpXLZ3TDJMyl\nvNaJASv81bzN/kEZ/WMeX2DrWGfCUxlQkuqapS5sNU8X6F9+Dwil1oXw1sWu\ntFtfEVwUu5bxAi8MTAP9DZzMvuQ/PqUep7c1ik6wguvNd2AVXEWwv5m0/705\nbkXEL5ComvLv2F9C6XU3L1gOGrVR+7vwwBhho8+dsxgyjd6E70osFpE5Ntxm\nUGMFaFgB+Twvr/LIjtQIa+pyDM34Z/06S/NGE8laBkT8mkhYIRWSFEeeoUfI\nWtFvwBo9oDJlcWS85VYSF9ZgUB3t0RvdG0Tmc/MJng7cBcqt+/SxTS+QsLR0\nY2KOGpeKEjmURfpSrFy8GfzeiM6K881hO5ttQRKJw7TvBjIvvpTv4t5w6O66\nuHRZ\r\n=T05c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmftm5cjz6GD/X+/petqdKzAxGK0xpk4hd51Pj62MeuAIgdjg6jlgQNPlzeFdSFKmCGg5Z1s9HQ4PhW4pR6qahNlE="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.6_1575351538358_0.7925146667784206"},"_hasShrinkwrap":false},"1.0.0-beta.10":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.10","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"9ce7ddd82779b579beab4256d71ccd4599e6c58f","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.10","_nodeVersion":"10.17.0","_npmVersion":"lerna/3.18.4/node@v10.17.0+x64 (darwin)","dist":{"integrity":"sha512-cMsnYqJunr1vue6Syb+FxhOoNbtQjSzFitz4imfB/vbneZB+IflGisDTBCC5B4vDqTRrzRtO8ju/PUvE9MelPg==","shasum":"a0dc1f1f4a77d21da5f03848bd1eaaa14780b506","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.10.tgz","fileCount":49,"unpackedSize":800385,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd7cmdCRA9TVsSAnZWagAA3q4P/0nYTRjMmMFVYIcf54Zk\nENCJodQlgksdsH93lWy2djLQ+rHvbAToo2n5ELuk4ehJP0txANSykmxc5T+j\nxNqsSJj3FyIetUYDqXgz0aQJi6GwtMYUj6lbu4flvHYjN8LEzKGZYQF2Yzyh\nx7QfApv9sgEV0tKoKaBYBPVng0mNI/ywMuHA4M+nbOcX41tbb2g7M+lnhJGt\ni7k+FE8CSijPupAECCHHqUgOlPWVz0ztPBf+BGh5+RXk5tOKqL/bzkkYOt5z\nefX0T5UUg62Liw0811yODtYNGaZmzaIxp4LaOeMJvkfoyUUC2ZuPtSw93Oq1\n+9+s8Kf21yJIo72kfYpsQ5Z8BZu/G5RNOD1vCXSBxOAgAvrkEFUiIYN4nS8t\n63sBNH8uVauxgoLSqEGU6buFkBpyNd0FLZ4/vesG0nGPsxpwjyQOyMb7eux/\nem5SpGfDWq9+u7UOH/Kqqnp21XRQ+4ZqF8joR5w7a6N2uZ0mNQauullqbaur\nXHRyE1Bx6GpRi5lon5yeD6K39FSvOZDm9PsXlrBSpc6NcHYr431MGJ9hWj9+\n1niSmuPoEsTkYC5K3kp73OmbU4BglyMKje/hUZ6qIx1iTS9uIN7ZVW5BkzTf\nj2gGd/kl2haJJLcrJBza3jHCRJJhAM8fNi45CVLIyNm2LUt/R8e4oOodNtOE\nkuSF\r\n=f/0e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE5rvTnVFVM0cRXWRYYvwapKyrkreEHts+dCC/VqFGT9AiEAikhRpf76NXCIQZq7S66QLii4C6uCdObPFAMtWzwI1OU="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.10_1575864732664_0.2703507804486682"},"_hasShrinkwrap":false},"1.0.0-beta.11":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.11","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"0725d97bf86bc97bc3892fc6183cdb5ed1ec0e70","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.11","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-Yq5/hQIEggaEq6HZ7A9nZ4Oe16LQHfCQbE0QJTNQz3Ox5ur0k0uaw/KC05C/QBizSnpZTryv3/eJieEyOBjg4Q==","shasum":"d38f7098602268041f813d46a869b9a2971e7009","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.11.tgz","fileCount":51,"unpackedSize":865694,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeX9XMCRA9TVsSAnZWagAAL5sQAImlGU3qsUhpOvhqPAfs\nzYswJ3vKQgSjmZC5WdA/02eST+9oZshp1oExEWp/6SlxAjb16W1bf99Nc2Hm\nTpPd/3jwc9eOCfUKKCFDM540LX4w/uoAhYI2Tt5V34gkB6VyilgBWQRDbydA\n7WrxTj1gP9tKV0ot4Gixcc7rJ5aPL+/72aFW52I1Xqoy5s8LkTyqc2c0AcAD\nc6WV7h5yWxrMA/BSDx4gK1U6Y3YOpcuya+VjS0u5WzCJG2O6V7SlmDdDbLhK\nMDaaT8H2dJitaGJ3ZFhrh7/axNuUqCtNEN9bpgov25cuu0iAM6tguhMgNk2b\nCm6xl9Rjgqc5wp3mumRzQL97VNu297fGJxSJNSP9a6an7GnVZlCHhsssm+ua\nOiVGQ6yBsk1DQwB+F2Kep9afbP01eqmO83gB+P7fA7Znr0tBRCX9vQ9bna39\no2PLS4MupCbGQ17KXRJ+iMKItks6RDysSbd9mnnXUWrRhK/YsiDoPc20euMZ\naYRIevduh+yHKX1v10CEHu1/81IdodbCBAcb/A1IlIstz8gPRHLHf/Av2RwP\nUQAe+f+uKWVP48s+3N66L6Ah4ehVK2PxHlSrB1x4mkAffHnaRbq9j+jCBeX0\nt9N0BN0YOHci7JpFc4RI9VMU9hmtiUosBHzvL3MHrbhBwYIfwdUA9Nh/uPyV\n4+bt\r\n=0Nlf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAbF89NWtiCBW7oz8khfLdORitlkhYuJU1DKGFKoGCFOAiEA2ifkFciB/No2hFbpTplhoLGrgvDry6HkaHhVZBjKMu4="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.11_1583338955708_0.10312360431878687"},"_hasShrinkwrap":false},"1.0.0-beta.12":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.12","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"7d03b0c7ce71f6f2925f3b712e528fffdacff023","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.12","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-HqDRjJ3tBEg96Cb7unu7AzkIg5TIDIGkDRZlgSWUj8M+SYwBe6gKZqH5T0kywV6Li9O/Fh5bZhdPMcShxbU2TQ==","shasum":"0da96b0e3182d5ec7556133113666130cce7838f","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.12.tgz","fileCount":51,"unpackedSize":870285,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeab+NCRA9TVsSAnZWagAAH0EQAIKf9+ZfI5UjMyjfh2T+\nn/8GvT6rJpaqp7Jbb4mMAu/K2ylMwDB8c7o+zplioD5SbVy5eWC2qGXHoaUr\nJn+Kh2lLi2WSviTE4RXuGDYyR1TZU/5YCzbXeHnP2Qet4MAefTg+gN6XqUjj\njNTNFK49AR3V8YfXB/uW9Mgkzkckr8YIHm5qwlHXLHOQjPti57NQwV3NPhHy\niMjy6rX/LRbIkicdaAY7BKqpUcyt4eZ3vWkk+nKNg+5xhifRHfD3cIvqP3vi\nTSxUCK31dzyiE3BFS1qQMOTUIbFExDwlil53N1vJorImtpjv86+99B4n0syT\nSaahD87PeIMVtxXl9XnEXJDG0FtCKc2sYivRxGZjsHb9UTf8i8opCp+E2KJv\nXJjwScEZa2YvNfNb04tzTKxlYvNyFID6JuNb4024gnENFddjgR3s8HTqGMku\nX1CghyGUn6AF8cb+qyUc1Ov7m70hLX2TGOXhWyU14JDK9sH8DnzxRChWG4Uw\nKbPBGQUYkU0570m12hEiXfS0kVKEYN4dfM9ZcwVa5VCzmzi+5IDJrP8fdSiR\nmjTcUQ9GZZ7kdN6ty4asGFGQISF079QzvJWo0RgNOZpyFpkLJjsbrxjLN29p\nIYG3WXoH6YBpn5yRL+1dC9ZStYB6gSxQwLFgXtdL/uFjng1eihw6VuRgdv+x\nMLg6\r\n=b/uG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDXf8ELRXK3y+0tBjRXe4d2o0PnpfhjpEmw96RHhqzA0gIgULF+/5kSrhd3n+BWdQSsczfTLoQFISkmgxQrli67KLQ="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.12_1583988620931_0.9848521907748999"},"_hasShrinkwrap":false},"1.0.0-beta.13":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.13","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"8c04220980f51a4dda449ec5e7f7a413b7dcfe3a","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.13","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-go43fZMuK62/pStN3oYf524lt+SllSZ/A7nNbT3D3o7kmtE4abp9S6jLjW7ILtryuMAr/DcuNNnaPxix+gRp2g==","shasum":"3c87acee7c5f6b0f7c3764ecf3d9714d7ae77297","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.13.tgz","fileCount":51,"unpackedSize":872419,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefKqKCRA9TVsSAnZWagAA6dYP/iLTcOt6NO0uQs/VKJYy\nvTByd2utIkPrHcnE9YYBvJ1xGA7uWUnaFpytNcS6FFf4thzxk4TjaaZW8xrT\ncb2uaTCaHB1RWkAhUvRj4t1tYcegi1zjCZPNNQRErVjmwSQu2qW/NLYufNYH\nQKyuhKbxj41PlHaKU+Jeta3hF0TCMk5SjOSidPLPeAe+3iOsA2HF4oFx6/83\nJfT6EtaccN/mFgEIGU7rawkD8q9LZ7Kqrye+hCNF/WafceUKte5xNqXtLj54\nv1h1ytSA8GdN+aKsCxBbz8NiQdSG2VE0VbfgEWvgTRWtmQStgAOZ2bDVNYZa\n0Iq4uMlrHX+E1SDBy3Snj7AGUsUe+3LpKq4V6H6TtwwFU54JmYQMCi6q5y0v\nqlcMAlP6rSiJWxSCPwC63ZBEq1rCxtLGWRQOqWd2m4SlRY2CKTixhHpdTcFw\non18fk2OH2xgVYhbNvAJAymE/augj21do+FGFH3sK+Tpt8U9z4rrM7tepvCY\nibe4hjEYabm7GXb2Zupkn4wiVMMrRMaKL9FWTly9B5KehExhydQrCag+0NNX\n7cqU+0lfj6u7ZXhli+aIkRci+eXdbU/tIIOZoYV8N+oJ1qa8S6Ter0fmMr5d\nfJZeuazxt+ijK8q20qB14WabDFNEeoUYyt/RPvfCJCo6NEVXIux2m2QBO5Wd\njPEN\r\n=+V30\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaGiLZxvx8DBS7uJGTce/VfHaN4m4wG7tSC0qCDzZE+QIhAM2tO2p1nw/gyLkTPTY6p0hZPz5xPMd2FzdOlViX03Hn"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.13_1585228426158_0.128384757221645"},"_hasShrinkwrap":false},"1.0.0-beta.14":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.14","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"c8816354ddf9a15ace20bbe7124e21c8b17e85c5","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.14","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-AiHaUWFM9MDpgFzqhrTbs7PGNh/I2RaRLvB9uZwqeHBkKLpKcefC2aLIZuTYFVvcboyvS07mLetG7gjA8UiUFg==","shasum":"df0f0dec204d88d1ea584052b8a7df899e2d1f87","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.14.tgz","fileCount":51,"unpackedSize":874378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJehEPDCRA9TVsSAnZWagAAjbQP/0jEYkiZz6ZOWcJ0I9Z6\nS6ruTr46CRoIEyDUYPF9TEGYoU2HsMj2ENQyRraDDMkXjQfZMbcIeHxZU5a4\ngeydOtdTwAwEZecxDv3ktSQtdHYDsJYnKFsc1D2MhAwOt7lFrUjVJOqcQhNS\nCY70AWUjotatSvgovc++Uqj9hhW5MUm4tuNJwx5MfkSQhWBBNtX6ge79j5Zt\nzcmBjyrgnxpXv6EPvDs9UmhuUnfTcdsxqUylv0PdIv1E8sTIXVNssz7ZiLSu\n29e5NQRNPwMRmKDSt1h5wfyqqgasLTjA2MUvuudRM0kSHq7dDMH0NVMGvs+8\n0+LRDMelLdKvMF7iWPRm49Q2NW9dI/YbeTT9ao4ifAOLbcasHGckMN8J3ZHa\n7INAjp3Ngdod1JcKxBT57auNkNVvgdptfWSQPkJgmmXrgbT5m7o3UUwbvXrm\nVQaShXfF6a7fd/KGciHnu1rryZBVCkdIEFUR7OZs8o9+Jh9BBWsm/VS3zBbW\n/Q+nW+lJtHVSCRtyHYkDFpUi4GaYFOm9y4hUOZP0sYcwC7n2Bj2iN63Jl8/p\nRaYoB5if+3Vt4XbcOawf6ALCYDK8DTLFjBJ4yDfVlMSr/BEcIZSI3f3mdOOG\nkGEXjXTKGRP5FXCRZKRf2e6UZgTLBjWn1pnHJFtgO/INwjJ7telj1oJp30/R\n6wNq\r\n=LS2R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCa+qJLzF+xwSQ9fO174t406JuCioPhZoqMqmAbR0KJSAIhALEsNlZ7winZK7paDAtOL7Bym5NHnFsE21sbpe6CeNfz"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.14_1585726402664_0.6670774325005695"},"_hasShrinkwrap":false},"1.0.0-beta.15":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.15","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.0","axios-error":"^1.0.0-beta.5","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.5","warning":"^4.0.3"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"5adcf9aa45fcf8025cc7a60388c5a1ab3ecf2bee","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.15","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.18.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-g0z6X0r1tOKL7KmwC/knewwwfdfHxTn2wsoSv41AnYO+EXYlA5Z8uDZYMfMTYFn58/8s6q8Rik0blROCXRuGhw==","shasum":"2db4c225baaae9aff609255e4e86f4ad7ff21a0a","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.15.tgz","fileCount":57,"unpackedSize":909521,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeitaxCRA9TVsSAnZWagAAdPwP/ir/7AZwVYgtW8L2hpxo\nXkETvgSv4GfZ5L3Xv9HX/SE7X4L1Eb1NH+Gnfsbj0utonHAL2/9kOJ3AUcTH\n6P2/O/S0fu0NtFtzFwFYDdUsUtMfal0bbdA4ke1p0kNfgZ1RWEX/sF5zUEF1\nc4AAlGnR0W3V/q19qd9OkggfIEvn68y0lL7jSG/oB6DY3yFp9WtCOwcbhEMm\nyg9TpOjWsTkZcRobqItYxG/HBwe9FreLVtO9j/xVQpVoFvAx+4T3DGJRIwnH\nTZH5k7OzGcdl4KWBWan6AypJOBB7MADldsvM7+3inFrHTN4BDyEU5VU/b+z7\nA+vTwnGGuW5latjrHOS73KlKi+OitWyyd4UfRSbVkiNFB5D9+EV5Awr0iFt7\nSCMxqJRxG+X/8d0mMfBDinjLcctMKZd53Vi5+xKvNUphMvdfwEkLdl33Mbq0\npdYesCK8hzJ7vrmIVY079IhLUO+FmulhstRtt4kT1tXSMiZ1GATmCFG8pPT7\npzVFACnXgCgO3mEK60bVzOj7ZGTUpInMZe59AqTCgVLb0ljDb6s2SSGK078E\n79ZjwlexlFejeGp7V+2V3AYpZ44eTo/OJxlbXZWxiCyI7rGszVoCELlfMzbW\nXsDNT1PeUyg3h24J1jL3HL9DSq/OEAYdZa2ztHYHLEiJMNaFo/ouZ1yzwqdr\n+0o7\r\n=qP+W\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFc+pkYOfnf4eCdKeFgY/1Gz+RuNIPaBWGeVzwTxsv80AiEArfLkiGaPG//Qb/r/xUiw/9ifGAZ6YcKoUsvoCNTWErI="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.15_1586157232616_0.13900093216192388"},"_hasShrinkwrap":false},"1.0.0-beta.16":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.16","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.16","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"e0695dde8d2b01d1a068f4086fbd7988bcf9de4c","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.16","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-IY/1emMMkUaks7gRaap98z/i/nkf3mY5oMs+PQVfM3DJsCTclc1RPrIM/dC3CHwL3yk551nY18nb0I+eTbr6Dg==","shasum":"f13f13b74a17a8c6afb0c9bf35eb912bc7046147","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.16.tgz","fileCount":57,"unpackedSize":905893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeiz1wCRA9TVsSAnZWagAABVMQAJYmQ4gql1DTm80WFiTI\nAvBvMch3FQUuK1ZyVatIUgsJLmPtZx74sfrwhDRP8q/coMdxX4zP9PI3YICf\nKmTc/DJ1enPD9E6ILRBoSsEf2jVBeYAwGWw5WqcsILm2ApuoMgwotxrX5Wcp\nEaytU4lIoZXORsw7Si90cuj0CYct0T63gKmYCgAEZvGyDm4SQmw/ox4BA2bD\nJPdnVff6dpmwJB5LXBQQ48egXPJC5N/BQ3h11ZrYYT2Fc4J1IiVj0RzZMBVF\nln2Zcfdc7F32B3snv5cfrxDV1+AOMyDKqYoW5leOZIqf6Gz+YbnaaaqbSNyY\n59DS56ai2k7K3baFWHvBrBQGzY7831I8SgCUODP5aIs/mlrkyq3qh5g0N5uX\nLKWjqAaKmhZUcuDsllk309x49am4E+Ck1eDBH+/xUKF5dLwQEClPS/2BzA6G\nxlR1UzLjJOkXHKBlDe9FC4ClFvsIMw4baslISH7xSrHxYATGLiZIBEWTAwwO\n2Q0wNi0XWU58CC7eiDNhC8mpQSiIKAsTBWvxxVvF+k7l9CI9ftHRTIFZTQqU\n+lSmbQEy36L/ARSEMQweQ5lKjPwkTCJhSXchExYA6ZnWSYDqop0Vqgu3XZg7\nR3bxDWd3VpAlaodQqefLp3PrlKVgRBrKtxM7PNmhgpUIJweRU7Gp7lzYmYPr\n8N1z\r\n=GfIh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCfzHC7NOApCVQqOtTZjeX33ZJt8PQ0QOEmSagdG6D8xQIgR4Mv4E7beDtoGhW4J3pzsprW36DaQZ+ArdO06LuaBys="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.16_1586183536180_0.36109261470841125"},"_hasShrinkwrap":false},"0.7.17":{"name":"messaging-api-line","description":"Messaging API client for LINE","version":"0.7.17","engines":{"node":">=6"},"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","main":"lib/index.js","browser":"lib/browser.js","keywords":["bot","chatbot","messaging-apis","line"],"dependencies":{"axios":"^0.19.0","axios-error":"^0.7.17","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"gitHead":"e5228dddac20dde2da47d053653b68013ceb3974","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.7.17","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-Qlvg80jlaNglNrhx+YSW/5ghXSJpgGBvDF7fBw7JbzZ2murlIyMDYw9fB9O/D6gg011ZbFDnsg0zdoNeC+R36g==","shasum":"73b066350e6980fd49fadc18570f492a0fd10426","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.17.tgz","fileCount":22,"unpackedSize":395498,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejV27CRA9TVsSAnZWagAATjwQAJZnnr7dOdAVUF6gSuPp\nAGjQ2EIgX65Z3PgUYY0iNxjDBQ98JlL4FXPLw2UEgS8CgvHORumvR7zfLS7D\neJdDyNWHrfFyZq+FzFAE1Bh3BI0TNbUs24e1IgDFf+PH9M5F0U4Nw/ocnR0T\nArOOqj1GvW5tSYPia6MVSMnh664YuNc7BORWxemWAkbR5esefT0TxeGpFk3Z\ntQulOTXWkB8LDTzuutTLwo9QbqQBlNkRAbaQqtb64TXxHyOqNFFpS76qh08r\nDPqwlp4C5NLQb0hSNel2DKi2eyB+U2NdZAmeavFg1oKMPhj3eV1J32mVSKuT\n1Bi26nLnMKh3DLWHZmIMZVsE0yll8aOr9ezGAm/S5cMG/9bNh3JD8MB2wZwy\n8vocPJ9EfnIRC6/9mfDTOQrllQDkbcTZh/U2xw+n9FX5PFoGmxvMLT6kpqTl\nKAsfLxYfl/BydgmphS0VZXNT96iiaVc1UXezzSA9Edu/N/cKnJuEDc/1AoPY\nRp2uU+JEzRkz0eYjaYyJxKtGsjzpglUxo8BhIRSByKYk2T7h65uL0oWQVkf8\nyNsVhS751vfQ9tkddE/1qidYufnVxG8/XiBiougBlfuaoT8d/l5ktY08HiBA\noKDLHBl1ON94kjhcESH2pfAlmBBYiOM6cW7oytrJqaiYklsUa7U/jCYYT/V7\nYtx/\r\n=PCPH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAe5Vjo+WPukCuSaha6i70WhZNzmF/SQzbEtQRpxdNvVAiEAyUBsFsHTd50hxCPiGdLQgdkU5ffDsk/TE5h9e7b+iAI="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.17_1586322874905_0.3811904358748359"},"_hasShrinkwrap":false},"0.7.18":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"https://github.com/Yoctol/messaging-apis.git"},"version":"0.7.18","main":"lib/index.js","browser":"lib/browser.js","dependencies":{"axios":"^0.19.0","axios-error":"^0.7.18","debug":"^4.0.1","image-type":"^3.0.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.0"},"devDependencies":{"axios-mock-adapter":"^1.15.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=6"},"gitHead":"4318450a056e285e70093a80fc0bf79910665642","_id":"messaging-api-line@0.7.18","dist":{"shasum":"7ee4dd926880d76511f8d22f78307e43725adad1","integrity":"sha512-RJG0dj1PeZ6ML+0MJbFlb3D4wjXQzmDpZi6l9zk75IDJzEO6l86LKdcfEusbzqoIVm2xHLJhJDDusDBSGfIK1Q==","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.7.18.tgz","fileCount":28,"unpackedSize":425160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejV9XCRA9TVsSAnZWagAAMdcP/1HaYbhzrRfu5Skn58u6\n47LdqgzPzlzszJ4Ra7FHcJW4zi5VKgY4I2/JwMT25Npmv2Rx7Z+hIiA+FrCw\nuhhcuDGj2Gc1dvaeoCDU/6Z1DR1ZHRgkM4Srb8IRZwBsEvF9SHfY1BS3lXOy\nbchoH2fbFEO1x9hH1sC+NR9mkj9yHK4ZbHfifQhsPWXq0xOQfk0MGZILfgZQ\nCYNLp7ulQxfmtILm2RvJpyHF0k3JL0K0t0k5IcOSiGlX7jXUAuFOoEHgddln\njkU3iMW30i58Gp3RiSnEx+iFKgmG1L/BzhFownl4PF75IsD6nW4YHc2sIzP2\nQb/DjCJ16oSP84YUKAuAcXKSMwFPHJxlYzAPsXzlMMt9aisqymRGc3MbGv1E\nM/LD32sjUNwPxEcCqLD0bUwXHr/T6ZHt9KT57/vdfS6DmE1P/DWt4XtQ+TzG\nYCMefH3olb42JvBAD8qPVlVryjJOdUzfT4liYUVmNu8YWwnnLakutO+3pFaZ\nwYmFoxXoPFZuS15Qm8PmW3tvhiGVa1mytXDgu/KPMuQCU724yIuBxZRW3g1A\nyNFSSEgwYAS2dkBWkDqydYjsxa6cP6VYdarDAUjBm1d+Yw8sBPaLhGJBd++c\nrF1oNBoTGICrvJteoBqxvZb8K6w2ft4QVPTgGNuU0Q8BWak4pEabf5w0rb47\nZATu\r\n=KxvJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC2PSnB7UzKbrr8jUr5ZFXsV19K4X0IxKiNq2XE4yyyQgIhAPW7sBPzFrJOUYknbsRI9hxHXZ6mmmpXmS65Tg+lDmfq"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.7.18_1586323286559_0.2726693770686024"},"_hasShrinkwrap":false},"0.8.5":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"0.8.5","main":"lib/index.js","browser":"lib/browser.js","dependencies":{"axios":"^0.19.0","axios-error":"^0.8.1","debug":"^4.1.1","image-type":"^4.1.0","invariant":"^2.2.4","lodash.omit":"^4.5.0","url-join":"^4.0.1"},"devDependencies":{"axios-mock-adapter":"^1.17.0"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"44e4ae3a8cc4ce7c1fbb5a482e6e3a3286a227a7","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@0.8.5","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.16.4/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-UOilE7EeIUk39JuIF4kAIgi9P554QI1PL+yyPias4tSZSh/CkaO1Ckk+68Mk/oCNxJDV7z1nRHy1fGnIc22NgQ==","shasum":"d71b2ddd2efd18d79738113bba352ef56300a451","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-0.8.5.tgz","fileCount":28,"unpackedSize":576855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJejWLoCRA9TVsSAnZWagAAMhsP/1r+GQ0FtcPRLiCsUjIY\nRIzqAPjlp3zDa2GqUqEGX6LxC24jGhFxrgz49oUTnMOZ4DIurxm+iXwwYL02\nmBh1eYS4S3HY4slWIuy8tvHUpfJ8ezknacZ12Xjp1PfmnLS3QJG2sP5WfTnP\nOxpVHrvKFyALZEfVm1wKcfgBajvcmdAaey1AstQWdQSVwPxhr8G0HA2QX/OE\neQ1UDNXWP2INUfLnVaH42kGn5West2kGlO/QxBU67mLOvv98W++vFypLLPvc\nZYwKM9foUejf6fZ7vEOqu9fp6rhtnej6wFMjqfzwfu0FMeBSsH9ALuExLF1U\n4qQXfvACdSgAeR/NUC42wZfmuTW96UDW1z5uC6jxZRNKbhz3O0OnJY9u2E+p\n1FmkxcDBT2A3iZ+VB1DdlXKXWxp5a1d+fyKu/rt4efECzjEOwG4xgV3rWmvH\nDLx80x8f+LM9/s5CAaV4ta2nvCRcHCJbotlKtvCTEhmG8c9zpe2JxRXQfMsH\n0oUH9P3ZO18gumZ4EEAd9KHSjZp2mlBOOa9wHTr73pRJ/kgnivRXt9aDGYGm\nv3rTvg9D+Z8R49K4InO2vKUne6+0p8CmsgGLJqgDY9dIEY1u1iD+ZkLqWtb4\nVnfQIMDo4DQCSCF8AqRGGCZsxwHtISQsXHBIZykK/zpj0gLr9LqMBSoa5T2I\nnxQx\r\n=Dq34\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtUFXJJ0zBpms7YaRpN1eAb+BRjnhAG6ceV8xfPa9yKAIgChrk34eLdNgaFgJio7iPH8sS0iY9N44aodjYB9ysFsk="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_0.8.5_1586324199725_0.40491311012149533"},"_hasShrinkwrap":false},"1.0.0-beta.17":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.17","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.16","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"4a7b9e5f532d6930ab81613f9d809810fe7bbeff","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.17","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-F6R0dLm3Wk7YP2e8ZrFxe7BlhuibXB/aDBBQwYeXuu8jp+lEsKm8yJWuEZx2Y875o/Dvn6ekkBYsSBa15t7m4A==","shasum":"58cfad0362ccc9f5a54c45b71424df93f504d94e","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.17.tgz","fileCount":57,"unpackedSize":906108,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJekBzQCRA9TVsSAnZWagAAjXkQAIB5itLTx34kwteJldr3\nQGL0NbkjQOrNiyWLQr6rIp3ZyrFy3RdYsilbVo4CXO4t0iIDuUFCJSF45DHy\nkZXiaIvBtb4ymIPBvJX3HmPRnm5gKTynGCr8pWoKKeSlyZfkQw7lx0enosjR\nGjVsI+NHiWvzb1K1y0pCBIwdteegPWk0p7DYANvkzXyIQBTOLheZXRUUzMoE\nSps6tNKjWle5d7RrYOOVUz1EiEqbcgVwDDBibrjycK2iNiFAt2O7yVeqP4JI\nDgBmj2kfhYw4At8Y3u+J/ov3PrVnI4ygSPnwT5k0NqccTDFsIco1zcN6g+RC\nA+hkgBX70r2+BNJY3exP7v2uQNkIsGezIbUE9cpCtqqXpjGHkIgLHI/MK0cG\noobzYZsSPKX8pfqR/5e9yfvwMa2PAvD2Z4Z4N4O1VCywcohX5W2fdVauqUo5\nYuPaq1PfoTgQWtY4WuLuOh9YgsDlC5XCC1J5p2mjjwutEmWeTXuOGwdOf2Wt\n0rG6Jx5aEzAGoT40D0h4w2SxPoD0qOHlTlZxdv0ujDAT8fO0K6v6MMQDpk0B\nWlDlwCAjR2+OiIBWVo5KtFHiERvqKKouE5tHpX+7Az9IK2x4+kXEIgD0QHhN\nreA0nns1BjZVJj0IxT0vfACn0bcTLGaAvzhhsDUBP/QuOBpa0V7EP83lrqNK\nZ1OQ\r\n=EQUL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFjH56F/8gjQAf7ykbABuMkNPOPZ95dcoS0ZnKMaxsiqAiAJldQZ5fM57tS7SnRYTlxlP8ILRXPXx4s6OXvV28Sw2g=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.17_1586502864398_0.8924207268074076"},"_hasShrinkwrap":false},"1.0.0-beta.18":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.18","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.16","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"7d803786ccc34105e4cf105c5d25b3354e1cb283","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.18","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-n2czrjumFIWGortkEtGk1GF2Hmoohp6A46U3Gp6lybAuTqm6ebCJyPMQJRel8b8d/MXZqIAUZFyQGdU/qT/eaw==","shasum":"9f80e687dfc2205607212873d78d12a66ff9a90a","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.18.tgz","fileCount":57,"unpackedSize":974773,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelILhCRA9TVsSAnZWagAA42wP/1+m2BWuoJxFUaa/1nw4\ndrrJM1qHko1HgItf0y+4Ujpi8W2p3zy4ZtR8y2NHRTK2RqumUSOAnAe56c4z\nWwHOqXD1CaX/tZ6Qjn9MPw9TBKxxa+TSflEPpU1ZEm11imaPjztgv5ZVrhNi\nP9EtgeXRQfcQqAXuK3CLyv7wqSL6GI4nW2LpVMJ24kj5qL9MLDq1/e6gCnIx\n20S0oPdSwHZ/Y0V6tI8ijwnMovgOynk3QHlxi3Ty/R9v+ciPbEDkQIf/3C8Z\naXyuWEQ0JEUTfBd9Rd7s9zDbyPaAQUerm77dpLbHI2jjuCKKTWldSO3nQSOc\nv+R+JBBxQzs7Xqewoow3vQjCRPUyyHGc5VcxY5teVz2j7J8wodYndFJx5/mV\nQM76UrzAMeIuplM3N/u00CO3HZuqteDH3Ll74p1LaJrBQegiE4KsAnheT6t3\n9Mk6AvDBmT4nyCGysZtEWh0KIf5RZ2m1Sfu66nNjPv6UwQLOIYTQ4f0nAJoY\nmGgWyR3GLOEHhLOsGbzGa64Br49hW8329GcE/Or7xpmoc9Etio0D907xPfII\nm3guT1TDUK4Eoszl8x4xngmIiH5nH/UJLuxL9g6UmRP9zmojjGaSBNPZqvWP\nIyVyuhlPvUF4UvV473sNs3M9Blh2ITuH4A7eTVJVpMo1itzj4ekYlpcFsRo1\nN8Ey\r\n=B681\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEF4T0ioBrlLYh1okwk5zlV7S1/Or5IYE/O3T2R2f1uDAiAp+wW9Jyzpj81c3/P3PCPn+Sd8y7fuow9p4XIWnTFqLg=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.18_1586791136614_0.08716537799403157"},"_hasShrinkwrap":false},"1.0.0-beta.19":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.19","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.16","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"21d842eba8d7cd12859065c3c9e57078fff9cd85","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.19","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-HC7YkwwptrBvEFS+F31NgHOx8wNuqq5BXmQuDuJG6I5oNLA/WOnpD7NURvJXaMK/u7sE1faXyv0PoTw55Un0+Q==","shasum":"0236e1dc02993f70c79b21849fbb68a210809fdf","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.19.tgz","fileCount":57,"unpackedSize":978195,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJelfc+CRA9TVsSAnZWagAAqjgP/1+/NhEh5zQse8lEiSEo\nWYPlTlXixc1sWARI/+Qq0GzK8iDOmFu9y54ltiW3albycXiIupqwdnOPzuaH\nCgXrZi0vdD46j0HBEEJbVrWXH+fcTyx1gPTxNhHBY/ilMCkAvZWiRL5eF0rP\nROEFSWpOJJWMgh9TzyVoaqx21YohHc8Atxt7YU8X+mePQw5rRmLpSJx7qTto\nRHEGtuyqiUusjKMgMNmUN5b75wYlkil3tMyeqMNRu5Ffk7ZcDcW0Vclmn0FR\n4PNuuahvsLhTGwAbt0UM3Jg6cV09i41O2STumbS8EjCdnTxYyta9jssdHInt\nOOTvqWdxcW/eIHi+WPQwvjeBgIlVV3SdI3HAibLithiujE4LwaozI1SwTVF8\n4yql4o/fGsaTlPYqeFajbGiafY6L090v4ZWb2ErX1IBgThQ4cVNUziZY3ZPZ\nlughvI4QRxzx77b7nQn3svmKeRRgnDMPzhstp3HvwoL09X+8TEQnk6VcY1+q\nuIBy3xlrOYfd8aq9y7xovV6lufck0484PIG8rTfMcTrmZZub4OIOcRzKFxfi\nRxq2spMqLPy/Eviu2LyGVRBldBKL5Zop1KTpVGOOngpYDIyWZH5SEfpPAiuC\nK6hi3vISX2yUzh+yJUpv+ah2Irs6VILhUtDpgolsq9fan6/QU4W7y6XhoKYt\n9O8r\r\n=1Cq/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJoIWlPSbYhi3CbeUTrCOoFcpBFb+MB6tD3a0hVltFMQIhAP/m2GaweCcYv8B8cyhBRVGF8rjM3CAH7MJwsgaqw3d+"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.19_1586886461739_0.40545103718829534"},"_hasShrinkwrap":false},"1.0.0-beta.20":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.20","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.16","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"6a52b4a2911cbf2d18bf8c4d1e07f317cb43bb42","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.20","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-LNWdAc59YuMh5pp4QZkO692pdkpXe6UOLwcXWNu6ABSxZoJnO6ss49m9bQcx6p8nOc5xbnRqIJAyRt3uNDNxAA==","shasum":"7470ff978b43ccf0d7d291cd74c0008c78a1284d","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.20.tgz","fileCount":57,"unpackedSize":978197,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJemHHVCRA9TVsSAnZWagAA5aUP/jjWxdFPtuJ7f5zglpqO\nM+ppK+CrSW2Gh0pQRXUb+CVAsUiQN91ZTt2HNYhGaIfoQYGEgR9kGWOYkmLv\nNsoOsnTLIUAW4L082c/4p/d0leTkl+8Fb//QtfeGbXOm1AXzY3cypHPojeSx\nd5wkol7IeK300dhOSYkEUdTruy6wDdEPU7n21gxJc3FPRJ4ochVFg6uiSl92\ng3dOGayObxkkj4Pyl1/KvI6dRELBdI1M89bgrIxNELFBuWrC0ZfkxgTetpAZ\n4ctqXFdDUKyIcnWYX9vbuNc4MEGpVX/0ygq59DRzlYi5W5GGdr1xTdIY7v8X\niT5Z8uwpJbvPexCKHhcY+cmhCGXXjyCVODRa17rAJvyfHFxaSKlVnVTxfqoP\nMw2N3fu/NUBb8CUFtJZcliJlyfV/681imuxEhsFCnNBnhDUv87SO6dhWPNR5\nAAZGimJpITx4QcVITbvrt2ky/WlklwKxXBQaAP5dwE8l9kVbYOGnDqg4MtjZ\nfM46H0wFh76zr8tq/WFBGB8qq1xJRxGkPAGdh3KxCEgxBCbSOZiIWIWtGsYd\nvBFOFFRTXPMxZxQefeHh4PKhKUB+lg5mu2SkocBYg2P8ZIWsVhcNzZXd7ccJ\no8PLwYBOdm+CWpA2MTkHHF1qUXYdB3d2p7re8/RXxzZF6hDpWjw2fPzKIsf0\nFEkP\r\n=pbIT\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChanG/BvXwvFK6xbZpCWvKSWZUClV0rOOsbnT+y+4oQwIhALeUZw7V0K/BdorQV6oGMxmdpp//1FG3LEDu5hfFOiyA"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.20_1587048916988_0.5943189087668197"},"_hasShrinkwrap":false},"1.0.0-beta.21":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.21","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.16","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"54d1c55b4f4ffe82275d67a7b5362f943bd00274","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.21","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-CGlek1UptTV4IoA7uUfOqMf6nu+rBwQ+9vLldyL0iTpuMCOCCM09fHiOm6ex85rL6shIfWaJheOuw0HA5qnJyw==","shasum":"0e109f7a9d45eaecffa52a26cf1a61feba22606f","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.21.tgz","fileCount":57,"unpackedSize":977734,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJep8yKCRA9TVsSAnZWagAAaD8QAIQoqXw/DHabYEs/+iLc\n9dZKSWoXfbTAAmwrneLDrds3OLoWN51gLZJP7y5xjblbT7ndXA1OJCReaWkm\nSK/T7P+oUccdlwPEuWiSdHtma/Q21slz/6WLXqsoIhzKZgwox609xbBnYycx\n9j8sdvviypS7vJi5q+JsadSGtGsYmbs98Ez8QPZ5pI/U6X664MU+N1VeP9jb\nTstpDl3dHIEAN0NaMSN/zXnkpg4Ry0wjGQ7wFzTU5T6E/HZDcY+PRoN51SLW\nUL3XP+J0IrVqS9Vet6wm8rIW6pXM7D8YuUjPYh6j2tkZAXTXzyKm4yiuIG8j\ntNkCFd2com7PgjLgwYPfTvbKTnW2yYuV7rgP1BYB9yT37orlhD6ezR2Ak6R5\nwhfatte72+4M4SFWLmNrQYHGAth97o4IWfXwLPoqSgrqmYEhAJCn48arsvwJ\n2QWtAKRnuE5KAOMye/2IVPuAMX97CeGB0QYCFOn73oOvwsXXrr/Wg9lSGesb\nbwflC8czPikcsVLmSi6cil5vKVKf4Nm1JxROGmwiAeQAP2MIDXc1R8toXlR3\nzOxa4RoMWlTYAulV7DwIS2zt8qPmmA6BQnkPJPnB4082snjmCLGTDZ7ECVqa\n4OiCqhPBc/8QbT8Nhww0gItMmSNGP3QeGsP5/ydg9LM7lUWekcG7611tUoXo\nX8Ma\r\n=+/9n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD07ogxeaNF3RJbakFjYlHKPM8ywvlXt3Jbb3HtMJPRUAIhAJShd2U1jMAV31M2T5odPMv9oO5/VDd1vHqqjLmCRx+o"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.21_1588055177689_0.6493360836995243"},"_hasShrinkwrap":false},"1.0.0-beta.23":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.23","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.16","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.23","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=8"},"gitHead":"5de733d62d61798bdb1d4b19b363bbe216b324e8","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.23","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-pTbFgVND8fzQ5mPYDStvDcEWIpnD0RE0q7L5gUbq0VTd3K47fcCT2wt5AleprSdDFN/zJsIYSUq6JiZsR/9U+Q==","shasum":"26fb4ffff8bcbe7873de35fd65cc6416b6c0ac03","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.23.tgz","fileCount":57,"unpackedSize":784209,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewlXDCRA9TVsSAnZWagAAaTcQAJ1H1vlAq5NfPSgkUwnV\nOw+AmiAj10X4Hzmfe3HVUaSJYmI6FYtypxYZU1/BqnTfILvaySLWx89XzsuE\nU5HWvjguzjcXH4qsTivN/scORp1aPeB1C01IILxSzgyrl3THcfwVAdmQ2viD\niJXc6COokeE1qe8yMspFVJMfMmL8jBWEQt3pi3iXruYg4Rj9NittCOtFRkzY\nSTLFa306IteEDA7jZ7cYSvRv2MLDFSsIIs7Oou4tsA+n2okg481aKv1S7aqQ\nxOV/tRDiTIrIpjDSbLCu3SdH5L/2YiqxuHSM5xVO2OKp66zyakIvWZs7EybV\nTvEeU3tTClcdQWCc90bg5Apsj9AVkk12RBnK38gGYEzJibmyinZPenoEbvzF\nuwHmiizlgsb98m2qjFFa8VAClBc8DyClYfMgPtUVIJ6rN1u4tmnhtc3sF76v\nDqRfq4P8dbp/dj1nVqM48kyKHHMx2jggmQgh3V0bOvFGoawG1xoe+T4AC9WJ\nLBg2AhBxTAWV4/MJ/JrbVKeNvoF4ToHPk7TMZyWFbQN5BZqqSZ6FIdmKmMN9\nOnhw3i5oD9pQeDddXlzZHdSBVhoEu9aWdhV4FT5tw1QF/dRKYplTl6/BKaL2\niZIf1M83Fcoi3BsPHVua6FHCP6sch34PDckA/NVyKm55W3R8+44QHrpYJnE9\nnZAf\r\n=fuJE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEexwd2ew+Ctdg3QmtXMjgIhQcVhIm+w93wJZA4r13MJAiEApaV9n9ox1ez/tCvgO67f+TVUkNY8hlRZ4DCLjkU3+ys="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.23_1589794243067_0.9471653684426251"},"_hasShrinkwrap":false},"1.0.0-beta.24":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.24","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.24","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.24","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"18258941a920ed2aabf7b12f17e10e8c14238c15","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = LinePay.connect({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = LineClient.connect({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.24","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-JKQLWylSYgFii01UCSshP0fvlw8ey9QFXx2EdWhH+PIqwM0qV5WCPRMlombGUFqNz5vsztIXI9+eECQW6Ia79Q==","shasum":"971f79984e2d2dc596132d62f09650599d78720a","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.24.tgz","fileCount":57,"unpackedSize":785262,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4dEPCRA9TVsSAnZWagAADp4QAJRxV+lkEL6/UP8klr+r\nFuBzVp0+jRn6og+0pd+EAggnJC0VXgLz8dZ3gLFimPghyfehwvlnmrPWpdeX\nbLkSJdcDNSRcLUMbEyGIf4LUgDFm0e2sd9JdTHl0MbLyY1gugJYvbUeyswVI\nNEOtqJ2kqvxK/ACx5M/+BDk+p/T7LWvCbzba0id2UavJyWYtwGJTE5AkxbnU\nZlA5ywzcHBgMCrFSg4Iwa3Lcbs/mQCkHSCd9hDnar0gq3LRCDBlH5w+Vj3w0\nHUP9f646+4mMZ6MnoRVkLonMajdjUWMnBgaojxmhDIL+eRlh6a9ICvnFVB+C\nHjZbuzXgGaoNwYMdbYvS1jlpvlzS6eN2ukTeUioHurzZQdGPh3tvTtgrqKBs\nTX2y6yYgmvooRnxQluDG9o0QyXFc4xo+NYSfblk2+NrQG3joUd3qy3WeFZ54\nJGnpGJNLWk3e7Yxb8xqXIW5TmGD4GXEKXQMY6ExwuRLPCag1RpN9lrOoeoH3\nxpT2p568PsQ/otSij9YpPNa9dvHyiWb68BTmJkScGH2xHIHG36BzcktLCTm0\nKaGPU41Tgyo+yFZ8e8O77hQkBK3zejecUlbRIdP7J0ZI7xCETchd/Kus4DfR\n+FP1g5TMz+J+Sg61qFWH1/T1oTV7MxbXOsUINjyuNoLOCZfLggg9FnNktRrh\nOlLN\r\n=P2h+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQJCZznEQ8aCHYFmtD1qyGI4A4lE5+m94Gg1hr+OUKrAiBIuiFSCTcsQfEUFaHXclx7NLCWtm9sfxijeS/wxLFFKA=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.24_1591857422849_0.18277307376652163"},"_hasShrinkwrap":false},"1.0.0-beta.25":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.25","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.24","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.24","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"5cca124548cbd6d36cafbdfb3ce6856fd338dbe3","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch(error => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then(buffer => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then(profile => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then(member => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then(res => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then(ids => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then(richMenus => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then(richMenu => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then(imageBuffer => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then(richMenu => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then(result => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then(apps => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then(result => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then(result => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then(result => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.25","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.20.2/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-zNUBecYqiZ1J2OBz7MSHp+bSwtQZujdWiqS255QVYf86mfaadId+nfU8DuJPdCBdBS82jjo3sSk4oMPu/+liVw==","shasum":"4c9bafcb449c9a859d8d1fff1192fbf9118ff592","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.25.tgz","fileCount":57,"unpackedSize":790830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe4hXYCRA9TVsSAnZWagAAO8MP+wQ6d5XQO7SfMb4M3dbF\nQ8SVfmbmZQEbgWHVF4l/cTNJGsjhpY6kWpHQJoVE7z4y6BTRi+60SOtRQmXh\nR/DTPY0UoroSQyEOrILOg5RPBxE7XlfC5O5yzLnoemrYy01QhCV0QummlOnw\nphXqXCgBfuYGwKMmZDBSej/1WhPwB6rdQ4xQPN3P8t0ZUOzG7CkUNz969R+K\nf2dshwUhIl9uiDK0lKjLsh7Sxm1p+N1f52E6ggPxL9FfoFDuF8uis/9muDOk\nfCgyGxneQDkazLuVmHHK63pY04/i9hkarvAxr42Sg7MaNegf5/V2aMWYe4+6\nLgVHxCh7nX/H5tU8LpeQLmJp7RSZqNLKDLK2a3xAcLPF9S6iF9pIjOX4F1NA\nCh64J6Qrh5oMaRhJ0e8IYWOdqnat9wgc5b/bqu7GhUo3VFXx2pV3pGUWgunJ\nzNnNWmhlGlvnvTgxhtufSdBK6t5HGqulhJWEPvlcaZVFACDq37tV07XdZL+M\nJPX5YPrlefs6muyFNKr6UOYue9x3RtVFlQ3qIvT7L+pVqF4vFap8gvqYVDaS\n4usYp0dPVRi1ukvdT1MrRIwMnufK3nYYQ7h6Geo6TPNAg8dvJ+BVjx1Bo6Wl\nDW1XixURey97pFoJYvn+i+LUEID07T5P6NQxxQ/ZKxo6gRSMjOeyJzOFsAPY\nHudj\r\n=4NLA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICvyZJhOcnzwIGu6yearg705jEkEZ5CO/Cs0qHdSVRAOAiEAvGe1N30Smksh2Q+e4efr8bdXeTjeZvGCVjPffYyz4kI="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.25_1591875031994_0.07336382605134362"},"_hasShrinkwrap":false},"1.0.0-beta.26":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.26","main":"dist/index.js","browser":"lib/browser.js","scripts":{"typedoc":"yarn typedoc:html && yarn typedoc:json","typedoc:html":"typedoc --out docs --exclude \"src/__tests__/**/*.ts\" src","typedoc:json":"typedoc --json docs/index.json --exclude \"src/__tests__/**/*.ts\" src"},"types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.26","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.26","warning":"^4.0.3"},"devDependencies":{"typedoc":"^0.16.11"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"a22b819aad9b425d5d0d2bb45aada31f0ecee42e","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.26","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-2EoRTrnuCschVWfT+K/DrnaI/2V5xUTTE/C55ABUnM/z6ACBZm3uUa0tfANVLFSZYe1+MjHg7DZcIf6TtMX05Q==","shasum":"1ea81582c556b02ecec70836370bcad52bb46f08","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.26.tgz","fileCount":57,"unpackedSize":1100303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6H0xCRA9TVsSAnZWagAAtWoP/3+MC4Tn5qLF30UpB6X3\n+wxUB/Ky2L7bZtDgVMjx9ZpyGgYoTOLPwl+de9IpNvD7LrJybkx9ID+xlu/i\nTNRb7jp6SS+/9glPWNBlYhH6GTzyUL5DTDhD6ba0zajByZV7egftlwPMPYws\nZh0okudsx47t2FoeIpkfucjBuqbJE9pW9ozeoQOSlg2VuIwIu/rHoFKUdHTn\naqGRDn8zvDAyIgQdIm9WSRJ2+n47q4WQ6EQTczyFf7urEjPasEKT5qNmXPhi\nLIaId5b4Py29jHR6zwfVeXCwfEXAy62lG/c6MtSf5jSu6WcSrTdUfaJ+m9Bj\ngOqBYi3q4TGshkFd33mEQz0Jp4MTjoObceCCPQv+BGeMnBfePm3ZThpAzY3b\n/fqFeH6Jrr7c0QrE65Pypo8qOt47o8oqrB5VCFGKKrYpI6f5TV4T79WE2ks7\n14etUOtBinNfvlLMNa2AOQMkB79V0dxl6vh+/4p6HRpI2wVt5Hlw4xMrCJ5L\nUoVSi7gsxzaZ6joOBEgQ9hZkLAlrP6OolwnLx2JZErEmSNVJK2fQ7O67zF95\nNyY9BHVotXk0PM2LsgTcOmckkxnNW8L0Q9IaFzIdKKj8r6XtL73DE3umjISN\n8lIGo2i8UXMXKT5ApEZ3m3vRODmkgUCjLwSGsXm9GuHquVXDxFtOy45F2zZB\n55M3\r\n=ctg3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCopCFWyM3G3LuBEO9es3evXubyFndjWzJhRWmU/UlPcwIhAJVYuRxTJb6FRbIWZZCQqpmUD4ZFmERfq+vaeqYZV6uQ"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.26_1592294704663_0.26591863582909614"},"_hasShrinkwrap":false},"1.0.0-beta.27":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.27","main":"dist/index.js","browser":"lib/browser.js","scripts":{"typedoc":"yarn typedoc:html && yarn typedoc:json","typedoc:html":"typedoc --out docs --exclude \"src/__tests__/**/*.ts\" src","typedoc:json":"typedoc --json docs/index.json --exclude \"src/__tests__/**/*.ts\" src"},"types":"dist/index.d.ts","dependencies":{"axios":"^0.19.2","axios-error":"^1.0.0-beta.27","image-type":"^4.1.0","invariant":"^2.2.4","messaging-api-common":"^1.0.0-beta.26","type-fest":"^0.15.1","warning":"^4.0.3"},"devDependencies":{"typedoc":"^0.16.11"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"38107f34a63c32cf0a1c7994c4c39a2d6034daa4","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.27","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-r51ikjTx698IhFN8jEd0tmjHebxEJYTPEFTR6XnTeKZQxc6OkCRHjDDjwG3tYXgUjd4Y5FMgKhdlvOfk2DpK3A==","shasum":"8561aefff6a74dfcce5bced57f2547bcdf9f67a5","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.27.tgz","fileCount":57,"unpackedSize":1141141,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8ZeqCRA9TVsSAnZWagAAK1gP/1sx+ivWu7jFhlRwemaa\n09/b80eYpPLrLhHp+NiAhVsfw6W8x9jtINBetEjzUx6H92Hzbgg2r/uBMhJ0\nT/OlmxLOTX5Ciqgn9mm6MJYJriD1fNoIsxm2VbZ1AHcnzSsGw0AAKPPic+v/\n7iRjrOxgtctwsbObZKbKm5ddB+16xzShOSu7HX4+F39vpkZdya/vutzQ7evb\nDNVZ2jh4vDms6ek2gW7/TdSNpE7C9q0SQxVRAj49PLun8DsIPykPNAxB8Evb\nzlXa37t7lAO+Q45iIaPFRGZ4DRjdj3k/GmthjkUveCbobTwjz0B4gNP/qy0t\nxvCbzybR1Z73c/yrfSJIY4pewSx6Ku5XOtNZZm5QMUULwPj7egXwUdB7seS6\n8UKLIrtShc9za7X8JE1krKm11pvpHtFlDVEablII3uX3z17pM7mhMHSwk7nQ\nhGSRHVc//80qr0osjETein59cjJD5i9KhYn2n37EEa5bCg3toZTRRscyIx8z\nTnFK2ViPPwauI8FxEGqyo06YArpKxB7pHp8Z1mw+oGzDpuAAjFbvF9t6DXUx\ny8MYAvTAe8RSD/e6IBPZOrW9emf4Pqwxre8pzmfZBUY7viMhAu43o5ps/Tz6\naO9qJQICtgTA1XSn+bEPtK8wwUYlMFqbTeFLJxEHpkJLP0BtJ1v/Sf5og63i\nhI8v\r\n=XGGk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWowqhhdGWXsuphihiA6hLnY5zU1Nqj7BcN8cO83qphAIgOMZUPPgZbQFUf6W19vSjAvQHbJi4kkaT/QinBVxAn2g="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.27_1592891305896_0.40041934390822753"},"_hasShrinkwrap":false},"1.0.0-beta.29":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.29","main":"dist/index.js","browser":"lib/browser.js","scripts":{"typedoc":"yarn typedoc:html && yarn typedoc:json","typedoc:html":"typedoc --out docs --exclude \"src/__tests__/**/*.ts\" src","typedoc:json":"typedoc --json docs/index.json --exclude \"src/__tests__/**/*.ts\" src"},"types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","image-type":"^4.1.0","messaging-api-common":"^1.0.0-beta.29","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"devDependencies":{"typedoc":"^0.16.11"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"3389b14efbdcaf968ed7476820edaaaa95da0772","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.29","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-lOw80QUeI6ZFeRRY5/K17Q//bmOBuEKKJsdQmggpbx3kIhzwzZWeCMl2hUyWNEokFTHQ1GiB5tYLjGKYNbaz3Q==","shasum":"a69ec3ce68bb8ed2e0c902cc345428d59b1aa682","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.29.tgz","fileCount":57,"unpackedSize":1142126,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+W9DCRA9TVsSAnZWagAAvmQP/3fiFsCJtQcVLZLvzibM\nK4/01fVl3zspr2Ixx5kfeHW7ayx9XQ+pCf4hWymNMNuN8dZb1ztLseYyrvBQ\nc/QAN530CM6AaSq1E/pGM8FEFWWvj/q2OOqfgV1WZrbcbxuKi6k5/yCmqJ0j\ncWjjYe3Up0i6CKm0+2zLmn8rZxM/UiqymjOWTQcBImu8Av3+Aa+A67KecKIz\n2u+sDHmcH7cIl3XvdTWkEBFH8m1ICOaaNGUCK5ch7mCaCs31KVcbuJ2Getl/\nGFzgiymqHJT0tZWDKZsWrnq66XFxFe9btdx58BoV/0474DYZypGaW5BKLG2d\nn8nDfR6puKIgSv9klJGW+6DILCeSqHJYR/cGoBQetREfLKdQxvJ0MrqzGxL3\nof7mq6vo8rGMVKD++J4xkAIF/Lyi3ahkP6kf8aUsOT7t0PxjDSAGbl/ehwrt\nx9eCQv1jI5xq1cYfGxQYJuZmRQEf2wXe3WZm4T2FUiIq0ClbQC0TJ+fUek1N\nu81gawBgeGELMGqgb3UHcckAB62q7iLBdxuHEfouMxx3WNv0Oa6t8mWH4FAW\npQ9kyWA+HEyzOf8Z4ri69u9mLS7D2KPeFSLeMdIaD/79pmZvl7KuQ1PupJmJ\nKocjkkyfhk3iXPQqO6+EAILBO2HQ2JGjrjbbpojgA/xXuPw0hdynh4xOoShV\nqLoa\r\n=gOxV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCUSXRZ2nj7B7KKc5hu9E6IoVnFwtT0q+vEEoGBqqfgTAIhAL550jzG1AP+YzA0c0mRcZeuGs4DpeSzLRBN3XHa9QFX"}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.29_1593405250686_0.17016464228802475"},"_hasShrinkwrap":false},"1.0.0-beta.30":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.30","main":"dist/index.js","browser":"lib/browser.js","scripts":{"typedoc":"yarn typedoc:html && yarn typedoc:json","typedoc:html":"typedoc --out docs --exclude \"src/__tests__/**/*.ts\" src","typedoc:json":"typedoc --json docs/index.json --exclude \"src/__tests__/**/*.ts\" src"},"types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","image-type":"^4.1.0","messaging-api-common":"^1.0.0-beta.29","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"devDependencies":{"typedoc":"^0.16.11"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"df0c4579f2e79195924a4ff12d39d71c4831004c","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.30","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-4b3Xj/riH4wxNgfmkYusWlwnr4wPkvh8t4EntcUsogZc0zi4BHNtN3DZ1Id3wIU7kY1JK5FPFQTvLTOi13kq2g==","shasum":"4b64cbc55f2fab0eacaaec23edaf7be40094f439","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.30.tgz","fileCount":57,"unpackedSize":1153292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+hEICRA9TVsSAnZWagAA9iAP/R26aaL64caax1JTfKCk\na5zB98Zf+LTJLEVdgkxcWrNuVp1hP/MTWvmbOxOxXU6tN0FwYiAB7cH5AMdQ\ntNkSJhrlR3pG2V9W21v7cIGNgHUVXoKarqf3aA+tOSLUc75fBqMHqi+9QLe0\n6Q7tyXklQdtxkwOLdkjcZiR5m9oX15AeSYqe/d12ubT7kImo189RJ2I9/bIn\nCoWYeqJ5gdpSNeUJnxg7w7gUajFaP4FfSW4h558F6gpPp8iapjBE2bXtMror\nCfqT17VOmPgKk8n/KvYlG7hNSkkVTWUPaceH8sJGNDCcGSYjrxHaL29tzaVj\nMFtRZxT2NVLHhij8vAH2a7dQfQq/KtMMwfGjq5iFWXFjx8S1XdGfTjIR/uw/\nvLuzxKsoeQVlQg0IJmbDq4e5BHbBUrju/21ZnbAAVgQ35zBv5Zj9ySo4rOPE\nohMEFJrtGMzwGoT9Ed/ksn60PkvMAWwD1VhTtB+tXfRBpQYoy+eNUYEnhTYW\nv1/W6Mg29G1lRrtibnKZIhnoltgLW29DPfWxF8kS1beLFZpOeUbDEX+JJOHs\n5o6+TEdfY69thj8yPYO2wCxlFnHMplxn4Mu+3H0Ba3TE5fh89uklYz7kXor+\nN2Y2keI/4AsGpriCeF/JLKHaEjRON/FOG44/BK+SoJ8AO0CHI3c7PcZafgqR\n/fa+\r\n=SKwk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEmbj0+KutekBJYceaX5B+q6hiyGv49NSl7FiksmySq/AiEAijV15Dft2VmG7AhPPN3RnlKWfEo0qf1dV6+iazBpcoM="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.30_1593446663618_0.5116057928566884"},"_hasShrinkwrap":false},"1.0.0-beta.33":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.33","main":"dist/index.js","browser":"lib/browser.js","scripts":{"typedoc":"yarn typedoc:html && yarn typedoc:json","typedoc:html":"typedoc --out docs --exclude \"src/__tests__/**/*.ts\" src","typedoc:json":"typedoc --json docs/index.json --exclude \"src/__tests__/**/*.ts\" src"},"types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","image-type":"^4.1.0","messaging-api-common":"^1.0.0-beta.29","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"devDependencies":{"typedoc":"^0.16.11"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"a3f7afb4cef3784c3459f6be0810e0518b1bb384","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.33","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-gvCmv1T9ExMIjMlr9CecREUrgUscDI+tmEJP6NlZx5Ly7fCKUrpToNT/N8eFKxjoQ85YTSnXupazXSklpclExA==","shasum":"dab867e25f74d24d61b71a11841a49499ac5032d","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.33.tgz","fileCount":57,"unpackedSize":1150556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfF9++CRA9TVsSAnZWagAAfnsP/iUVjTU0Ye3s1BstTh6h\nO5DSWLyoM8HKkoRm0MDkCkkBXsfzBs0YL2ldkcO5uOT50WBlKTOoBjrwcUaC\ntOCRFIAsaAHDIFxbUEDuDF/vUDHnxYNZsWzJYHV1tLt+/cyhhPhiyHoOnccj\nZTSJjkcGuYz7pii3X/Ikr0NUceTtd+LInT9CO1xIgkAGiQZoDunxlNoVsC1V\nOoww3Y8SjXNEQjIdlBvKhnblgs6yzXxzkTvc0keGunoJee0rIccUFlJsoO3P\nDHyaX60PmMYw+HnDQ0eupRoC68GxxtJZ03BDZci1OODC2Elk+RWttSOkxl+o\n+6UDManoRnD+gDUXlN0RLjUYDyMAb2oABl5PxBDkZQP2ZugxhMwXmtxVgJUO\nO68dKnaSUNLiiCMcUZnZHGydfSU5zC22cJYZmrfmpsDqso7R7IF3/z7xEIG9\nddt540AD8KguM03hbATLx8kMzBOzElW2dIno2PQrwVOcFCUbKJ5Pakx2yJAf\nce5QIeEz+HyvjEVuo643rhAWsHbIRz7Wn/XkoB0UmBAvMKnPdswkXJP4M+m1\n+NBmet1NiDoPGYZQZd8rDMTk4PmqiHFRdLEKF0SBs38wD2KvptnqQ9ZM82qW\nYCKkpOu8luKuymBsSEdd2PgGsB4lfcnvgZz+h906h5toNXh4wwPaxm/nJoCT\nUjZA\r\n=cRrI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIE530YCt8MBeauY+DKETRO2C2Ok6YMEIdS95HRxYDjOzAiA8EQpnhHkQ5IfilrlmYdpCRoJlL6CHicLLFcp9FiBFBQ=="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.33_1595400125710_0.051976963001875376"},"_hasShrinkwrap":false},"1.0.0-beta.34":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0-beta.34","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0-beta.27","image-type":"^4.1.0","messaging-api-common":"^1.0.0-beta.29","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"dffb3adafba268a22ff08614dcdf9716ff7bb406","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Test](#test)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly `console.log` on the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log requests details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api-line\n```\n\nIf you want to use custom request logging function, just define your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Test\n\n### Point requests to your dummy server\n\nTo avoid sending requests to real LINE server, specify `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on production server.\n\n### Manual Mock with [Jest](https://facebook.github.io/jest/)\n\ncreate `__mocks__/messaging-api-line.js` in your project root:\n\n```js\n// __mocks__/messaging-api-line.js\nconst jestMock = require('jest-mock');\nconst { Line, LineClient } = require.requireActual('messaging-api-line');\n\nmodule.exports = {\n  Line,\n  LineClient: {\n    connect: jest.fn(() => {\n      const Mock = jestMock.generateFromMetadata(\n        jestMock.getMetadata(LineClient)\n      );\n      return new Mock();\n    }),\n  },\n};\n```\n\nThen, mock `messaging-api-line` package in your tests:\n\n```js\n// __tests__/mytest.spec.js\njest.mock('messaging-api-line');\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0-beta.34","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-4whhyiGwTnCt5lsCPdO7xPL0ltS5LOY8b1ub91L/zBbONDdA1DVRyoEPv5sum/eViZ9+moAZzAwuo2JyHEpAcg==","shasum":"3bfb5e5f4122518bdbb40cba643e1ad55715beb9","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0-beta.34.tgz","fileCount":57,"unpackedSize":1150174,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVdDpCRA9TVsSAnZWagAA/u0QAIhOqncoJETrZP129Yaw\nBm4QRVUcKdMyYMp9J85dWGzUOsvGaAY4SnOTYo0U7utRcSG7wmkrsMx0CJRb\n7x3RUa5fgaj8GAXrHDiC5cXKtWZL94alEpDMEn7QiOLRPjP7WMYWX81nDzOl\n9bhVzG06WaIeOsxx2jA9/X2mSwNjV1RMwJ0HHbJQodJPFzLni+9qgxcvpfqs\nNMzh93u+ruzgci58Ne0Zyz80z6t94paZTSiuPL2vH8JTLJaOyWlddL35PnOp\nYJTokREyXdMiQiuc4A6ZPWnoqXnCN4MBsXG67MnWCLrKR6QHPaueJ1J036sG\nPZwXq22YFgaWuu/opcyCtMSTy13DqB1mn1pnM81LnRgAh5DeKQjF8LH1zWzX\ngYpDBQxCBiPumFTO34U/m3bY1Z3osYk8mkxv5zpA2hlGk0T5kssgee73GE7q\npck+eIzeUvZSBlhfk88P51nOvanIi/vGqlXDPqu7C95iGXkvykE8OiRfDycX\nZiDV/VBXkNejUJWq8CoqQkkU83Ka1YnzYIODu2xgdH+SRIFIwJyC/xCbExod\noM3iChoobQI18L6ap3z4axoRhsvKDGRL2t5ueqqhtEqPiSTIGC7BPBJrrtF6\nGJlo/7xydmof3IkAByCSGKIOziJXEGCvBadukrG1Fk/BCKjYKZ2cjoYnEr+0\nUJi9\r\n=Cp2L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEriOXKWSyU5ypm4x/ZkTT0RvsGTvJDw9SEbDo62DvsdAiEA5MnHxyoZm+L1k6N2ARvAMWXjKfyzo4CYbLMyw/96wWY="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0-beta.34_1599459561434_0.8901980311623261"},"_hasShrinkwrap":false},"1.0.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.0","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0","image-type":"^4.1.0","messaging-api-common":"^1.0.0","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"879afbd4bebbbb480dd5c1bd32e7cdcc5127437c","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-2QizUM8DYQPw3P0OeIUu3Bz85cr5Zpzgjzi8rffI7JN2Clr0R6aFu9/LXb3hIgRHZYnV3jz5Ez4RY47Nal9RSw==","shasum":"b25d1dd4ec071e19f927083d7ff1e724501bb93c","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.0.tgz","fileCount":57,"unpackedSize":1163079,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVfVZCRA9TVsSAnZWagAANKMQAJCqBVnhcq1m3eSBGIdI\ndSAngOcl+T1kApzk1v3qTh1CjOxcgY+UmsUwYlBcdCpOnLO7R8wZW4mpd0PN\naPv16zM+wgeIWOI6nMLLtRfc4gIu0am4DGQDCF/6hIx1AIfi+hCtQNOVYbPK\nC7DDwUgJgt3KYBcIs7y8mDP8WrcsF+3Fre3oUvXccszV+4w0AhI4lh1Xdk3j\napWdhAAPthm/kYZLwK+TdfmfZP3QBY6CoVo3aKVD9C+QbzT3TKvgrRrxOhT8\nLjvxdKVjEVm+qZuL5HlUxgYhJjXZderX3hK7ZRoihP00c7lhlb9HolSVeuSX\nZCBajLcRN/i3B0dFnGRQCufUoEVOM50Frswa2cNWbR5vb2N9U0GekyDxCFd4\nqjxu5sOQ7fnkltl3UILOfKM/mwpFFHaiNsZPShYzoB3vKtOQb47+ag37XGqU\n6q6IPf9+xVS4d6WWxuc8aoVGFZXwDtHALJ0RtqJ1N3yy8slIW+6p9xYnNMND\nxt5mrFg0NsBK0WC/QRklhnwZLpozlHsZRmPdkBKSQAJs+3cECzL6M02+O6PI\nv82ZSocGa5VjB6b1XVsm3YxTLBa1rp7Zd1tr2sOYWDAbSbuZmEkS1PXDJ7WP\nsh3o7Z/iukExtLMP/x4NnuNRsBAmnnmjh7EvOOg9DKpnmRfyHsv9RpXyVATB\nGBfd\r\n=AxmN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICt98ZR6JOkwsExmR7dctj1UxdaNtqVZxTcvEVAQ7xEfAiEA5UpNjVfI4AYLfbyXJjX1GN42YTn68Kmg3TitxSziVqc="}]},"maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"s92f002@gmail.com","name":"kpman"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.0_1599468889088_0.7883207757393236"},"_hasShrinkwrap":false},"1.0.1":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.1","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0","image-type":"^4.1.0","messaging-api-common":"^1.0.0","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"cc72282a84bd6f2176f63bec462b15ae4dd37265","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.1","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-R3ykY1u8iwsWvUTk3w+9g769i/Y7gD7qd3Vo5yTVLubtWzxwYLvHSzDbODwJKned/4Qe32R2laVI4P0OlqZkQQ==","shasum":"94ebd42873b6a97e0ed68e0f49efa0ed7345c3ce","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.1.tgz","fileCount":57,"unpackedSize":1152555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaFDWCRA9TVsSAnZWagAATEIP/Avd4bPXo0ydYoSm9+ZR\nopN3aZ2r2nVKK892xxdmZYI6jE84vNbRRECpghj8bjyZd1DIgYSmKEv2h8zf\nevK70zu9ZbsKjPVNlLAGj5KRR2/Pvq7W2E8sNVQrGDBY1Q82q67W4wJXHJjJ\nJtWnI+6Eb8P3O5oCTSXZWWuyULh7j3xorh280g31pr1hvOqISxEs0TeneGOs\nan2oMfhq3rhvvITsvB0KN+uNkrUbZ/RWCyttRottqSU2wfey7mAJWgZ2mvz9\n1Oz/AwBCua0Jbzz4JIbfuQO10mIEwfDH3hD3Y7SDsNkjOGGbGFpEDo53kdz+\nU5rzAdZXVGNFqsXclYVO/VqO1+qrDU7Gbkuml1ZFxL+co6zSTzPNr+n2/KvH\nDngPRL43RaP6s3TrvzIvmxowXEQz6PegWygje1lj5fq5s/7LjsqTLvQq+qUR\nfiDRyMnf0Lg9/MgF4i614WUJOrp/pFHsBOTcWh8sxVSpBJaqFK1vHkSlthcy\n7+O4hin6ats6Qa/VIWKl+fRYakfqg6EhGJ65hFOmSFyDDejkUZGU9Hoh8Agf\nk0rqEFYQh7swJiwqS1Z0ZdahRDV/XWqeJOsxnLiIIflXirm+IbJbGPFg1HrC\nbD9Acs2bS1N5rz8O4+VU1NAOjVpG8oBn7WXAENgPWa5Itzk7n2nfHTwhfkHp\nAJsb\r\n=Lybu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCE/9xkk5VP0J0E6Nbq+Qc0d+ztIHJVOGux19PEr+0AGQIhAMnLiFwuXN8e00HWlJeoKdwMc1a/EIs1JpSvyaBaA/bX"}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.1_1600671958214_0.7667793784274006"},"_hasShrinkwrap":false},"1.1.0-alpha.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.1.0-alpha.0","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.19.2","axios-error":"^1.0.0","image-type":"^4.1.0","messaging-api-common":"^1.0.0","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"9a7c6bbafaf6262108586a0b0dc1e6201db38545","readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Testing](#testing)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly calling `console.log` with the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                      |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                             |\n| ------------------------ | -------- | ------------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                     |\n| altText                  | `String` | Alternative text.                                                                                       |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object` | Optional options.                                                                                       |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.multicastImagemap([USER_ID], 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Multicast Template Messages\n\n## `multicastTemplate(userIds, altText, template, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#template-messages)\n\nSends template message to multiple users.\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| altText                  | `String`        | Alternative text.                            |\n| template                 | `Object`        | Object with the contents of the template.    |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastTemplate([USER_ID], 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastButtonTemplate(userIds, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#buttons)\n\nAlias: `multicastButtonsTemplate`.\n\nSends button template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.multicastButtonTemplate([USER_ID], 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastConfirmTemplate(userIds, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#confirm)\n\nSends confirm template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                         |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.multicastConfirmTemplate([USER_ID], 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `multicastCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#carousel)\n\nSends carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                 |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.multicastCarouselTemplate([USER_ID], 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `multicastImageCarouselTemplate(userIds, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#image-carousel)\n\nSends image carousel template message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                      |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.multicastImageCarouselTemplate(\n  [USER_ID],\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Multicast Flex Messages\n\n## `multicastFlex(userIds, altText, contents, options)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#flex-message)\n\nSends flex message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type            | Description                                                                                             |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                                                                                   |\n| altText                  | `String`        | Alternative text.                                                                                       |\n| contents                 | `Object`        | Flex Message [container](https://developers.line.me/en/docs/messaging-api/reference/#container) object. |\n| options                  | `Object`        | Optional options.                                                                                       |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                                            |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                                      |\n\nExample:\n\n```js\nclient.multicastFlex([USER_ID], 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"quick-replies\" />\n\n### Quick Replies - [Official Docs](https://developers.line.me/en/reference/messaging-api/#quick-reply)\n\nSends message with buttons appear at the bottom of the chat screen.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-quick-reply/quickReplySample2-b0da8a03.png\" width=\"250px\" />\n\n```js\ncontext.replyText(\n  REPLY_TOKEN,\n  'Select your favorite food category or send me your location!',\n  {\n    quickReply: {\n      items: [\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/sushi.png',\n          action: {\n            type: 'message',\n            label: 'Sushi',\n            text: 'Sushi',\n          },\n        },\n        {\n          type: 'action',\n          imageUrl: 'https://example.com/tempura.png',\n          action: {\n            type: 'message',\n            label: 'Tempura',\n            text: 'Tempura',\n          },\n        },\n        {\n          type: 'action',\n          action: {\n            type: 'location',\n            label: 'Send location',\n          },\n        },\n      ],\n    },\n  }\n);\n```\n\n<br />\n\n<a id=\"content-api\" />\n\n### Content API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-content)\n\n## `retrieveMessageContent(messageId)`\n\nRetrieves image, video, and audio data sent in specified message.\n\n| Param     | Type     | Description |\n| --------- | -------- | ----------- |\n| messageId | `String` | Message ID. |\n\nExample:\n\n```js\nclient.retrieveMessageContent(MESSAGE_ID).then((buffer) => {\n  console.log(buffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n<a id=\"profile-api\" />\n\n### Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-profile)\n\n## `getUserProfile(userId)`\n\nGets user profile information.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getUserProfile(USER_ID).then((profile) => {\n  console.log(profile);\n  // {\n  //   displayName: 'LINE taro',\n  //   userId: USER_ID,\n  //   pictureUrl: 'http://obs.line-apps.com/...',\n  //   statusMessage: 'Hello, LINE!',\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-profile-api\" />\n\n### Group/Room Member Profile API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-a-user-profile-of-a-member-of-a-group-or-room)\n\n## `getGroupMemberProfile(groupId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-profile)\n\nGets the user profile of a member of a group that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n| userId  | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getGroupMemberProfile(GROUP_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n## `getRoomMemberProfile(roomId, userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-profile)\n\nGets the user profile of a member of a room that the bot is in. This includes the user IDs of users who has not added the bot as a friend or has blocked the bot.\n\n| Param  | Type     | Description      |\n| ------ | -------- | ---------------- |\n| roomId | `String` | ID of the group. |\n| userId | `String` | ID of the user.  |\n\nExample:\n\n```js\nclient.getRoomMemberProfile(ROOM_ID, USER_ID).then((member) => {\n  console.log(member);\n  // {\n  //   \"displayName\":\"LINE taro\",\n  //   \"userId\":\"Uxxxxxxxxxxxxxx...\",\n  //   \"pictureUrl\":\"http://obs.line-apps.com/...\"\n  // }\n});\n```\n\n<br />\n\n<a id=\"grouproom-member-ids-api\" />\n\n### Group/Room Member IDs API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#getting-user-ids-of-the-members-of-a-group-or-room)\n\n## `getGroupMemberIds(groupId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-group-member-user-ids)\n\nGets the ID of the users of the members of a group that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description          |\n| ------- | -------- | -------------------- |\n| groupId | `String` | ID of the group.     |\n| start   | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getGroupMemberIds(GROUP_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllGroupMemberIds(groupId)`\n\nRecursively gets the ID of the users of the members of a group that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.getAllGroupMemberIds(GROUP_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n## `getRoomMemberIds(roomId, start)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-room-member-user-ids)\n\nGets the ID of the users of the members of a room that the bot is in. This includes the user IDs of users who have not added the bot as a friend or has blocked the bot.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description          |\n| ------ | -------- | -------------------- |\n| roomId | `String` | ID of the room.      |\n| start  | `String` | `continuationToken`. |\n\nExample:\n\n```js\nclient.getRoomMemberIds(ROOM_ID, CURSOR).then((res) => {\n  console.log(res);\n  // {\n  //   memberIds: [\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...',\n  //     'Uxxxxxxxxxxxxxx...'\n  //   ],\n  //   next: 'jxEWCEEP...'\n  // }\n});\n```\n\n<br />\n\n## `getAllRoomMemberIds(roomId)`\n\nRecursively gets the ID of the users of the members of a room that the bot is in using cursors.  \nThis feature is only available for LINE@ Approved accounts or official accounts.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.getAllRoomMemberIds(ROOM_ID).then((ids) => {\n  console.log(ids);\n  // [\n  //   'Uxxxxxxxxxxxxxx..1',\n  //   'Uxxxxxxxxxxxxxx..2',\n  //   'Uxxxxxxxxxxxxxx..3',\n  //   'Uxxxxxxxxxxxxxx..4',\n  //   'Uxxxxxxxxxxxxxx..5',\n  //   'Uxxxxxxxxxxxxxx..6',\n  // ]\n});\n```\n\n<br />\n\n<a id=\"leave-api\" />\n\n### Leave API - [Official Docs](https://developers.line.me/en/docs/messaging-api/group-chats/#leaving-a-group-or-room)\n\n## `leaveGroup(groupId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-group)\n\nLeave a group.\n\n| Param   | Type     | Description      |\n| ------- | -------- | ---------------- |\n| groupId | `String` | ID of the group. |\n\nExample:\n\n```js\nclient.leaveGroup(GROUP_ID);\n```\n\n<br />\n\n## `leaveRoom(roomId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#leave-room)\n\nLeave a room.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| roomId | `String` | ID of the room. |\n\nExample:\n\n```js\nclient.leaveRoom(ROOM_ID);\n```\n\n<br />\n\n<a id=\"rich-menu-api\" />\n\n### Rich Menu API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu)\n\n## `getRichMenuList()` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-list)\n\nGets a list of all uploaded rich menus.\n\nExample:\n\n```js\nclient.getRichMenuList().then((richMenus) => {\n  console.log(richMenus);\n  // [\n  //   {\n  //     richMenuId: 'RICH_MENU_ID',\n  //     size: {\n  //       width: 2500,\n  //       height: 1686,\n  //     },\n  //     selected: false,\n  //     name: 'Nice richmenu',\n  //     chatBarText: 'Tap here',\n  //     areas: [\n  //       {\n  //         bounds: {\n  //           x: 0,\n  //           y: 0,\n  //           width: 2500,\n  //           height: 1686,\n  //         },\n  //         action: {\n  //           type: 'postback',\n  //           data: 'action=buy&itemid=123',\n  //         },\n  //       },\n  //     ],\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `getRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu)\n\nGets a rich menu via a rich menu ID.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.getRichMenu(RICH_MENU_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: 'RICH_MENU_ID',\n  //   size: {\n  //     width: 2500,\n  //     height: 1686,\n  //   },\n  //   selected: false,\n  //   name: 'Nice richmenu',\n  //   chatBarText: 'Tap here',\n  //   areas: [\n  //     {\n  //       bounds: {\n  //         x: 0,\n  //         y: 0,\n  //         width: 2500,\n  //         height: 1686,\n  //       },\n  //       action: {\n  //         type: 'postback',\n  //         data: 'action=buy&itemid=123',\n  //       },\n  //     },\n  //   ],\n  // }\n});\n```\n\n<br />\n\n## `createRichMenu(richMenu)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#create-rich-menu)\n\nCreates a rich menu.\n\n| Param    | Type       | Description                                                                                         |\n| -------- | ---------- | --------------------------------------------------------------------------------------------------- |\n| richMenu | `RichMenu` | A [rich menu object](https://developers.line.me/en/docs/messaging-api/reference/#rich-menu-object). |\n\nExample:\n\n```js\nclient\n  .createRichMenu({\n    size: {\n      width: 2500,\n      height: 1686,\n    },\n    selected: false,\n    name: 'Nice richmenu',\n    chatBarText: 'Tap here',\n    areas: [\n      {\n        bounds: {\n          x: 0,\n          y: 0,\n          width: 2500,\n          height: 1686,\n        },\n        action: {\n          type: 'postback',\n          data: 'action=buy&itemid=123',\n        },\n      },\n    ],\n  })\n  .then((richMenu) => {\n    console.log(richMenu);\n    // {\n    //   richMenuId: \"{richMenuId}\"\n    // }\n  });\n```\n\n<br />\n\n## `deleteRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#delete-rich-menu)\n\nDeletes a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.deleteRichMenu(RICH_MENU_ID);\n```\n\n<br />\n\n## `getLinkedRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#get-rich-menu-id-of-user)\n\nGets the ID of the rich menu linked to a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.getLinkedRichMenu(USER_ID).then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   richMenuId: \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `linkRichMenu(userId, richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#link-rich-menu-to-user)\n\nLinks a rich menu to a user.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| userId     | `String` | ID of the user.              |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.linkRichMenu(USER_ID, RICH_MENU_ID);\n```\n\n<br />\n\n## `unlinkRichMenu(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#unlink-rich-menu-from-user)\n\nUnlinks a rich menu from a user.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.unlinkRichMenu(USER_ID);\n```\n\n<br />\n\n## `downloadRichMenuImage(richMenuId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#download-rich-menu-image)\n\nDownloads an image associated with a rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.downloadRichMenuImage(RICH_MENU_ID).then((imageBuffer) => {\n  console.log(imageBuffer);\n  // <Buffer 61 61 73 64 ...>\n});\n```\n\n<br />\n\n## `uploadRichMenuImage(richMenuId, buffer)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#upload-rich-menu-image)\n\nUploads and attaches an image to a rich menu.\n\n| Param      | Type     | Description                                    |\n| ---------- | -------- | ---------------------------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu.                   |\n| buffer     | `Buffer` | Image buffer which must be jpeg or png format. |\n\nExample:\n\n```js\nconst fs = require('fs');\n\nclient.uploadRichMenuImage(RICH_MENU_ID, fs.readFileSync('image.png'));\n```\n\n<br />\n\n## `getDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#get-default-rich-menu-id)\n\nGets the ID of the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.getDefaultRichMenu().then((richMenu) => {\n  console.log(richMenu);\n  // {\n  //   \"richMenuId\": \"{richMenuId}\"\n  // }\n});\n```\n\n<br />\n\n## `setDefaultRichMenu(richMenuId)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#set-default-rich-menu)\n\nSets the default rich menu. The default rich menu is displayed to all users who have added your bot as a friend and are not linked to any per-user rich menu.\n\n| Param      | Type     | Description                  |\n| ---------- | -------- | ---------------------------- |\n| richMenuId | `String` | ID of an uploaded rich menu. |\n\nExample:\n\n```js\nclient.setDefaultRichMenu('{richMenuId}');\n```\n\n> The rich menu is displayed in the following order of priority (highest to lowest): The per-user rich menu set with the Messaging API, the default rich menu set with the Messaging API, and the default rich menu set with LINE@ Manager.\n\n<br />\n\n## `deleteDefaultRichMenu()` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#cancel-default-rich-menu)\n\nCancels the default rich menu set with the Messaging API.\n\nExample:\n\n```js\nclient.deleteDefaultRichMenu();\n```\n\n<br />\n\n<a id=\"account-link-api\" />\n\n### Account Link API - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#account-link)\n\n## `issueLinkToken(userId)` - [Official Docs](https://developers.line.me/en/docs/messaging-api/reference/#issue-link-token)\n\nIssues a link token used for the [account link](https://developers.line.me/en/docs/messaging-api/linking-accounts/) feature.\n\n| Param  | Type     | Description     |\n| ------ | -------- | --------------- |\n| userId | `String` | ID of the user. |\n\nExample:\n\n```js\nclient.issueLinkToken(USER_ID).then((result) => {\n  console.log(result);\n  // {\n  //   linkToken: 'NMZTNuVrPTqlr2IF8Bnymkb7rXfYv5EY',\n  // }\n});\n```\n\n<a id=\"liff-api\" />\n\n### LINE Front-end Framework API - [Official Docs](https://developers.line.me/en/docs/liff/reference/)\n\n## `createLiffApp(view)`\n\nAdds an app to LIFF. You can add up to 10 LIFF apps on one channel.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.createLiffApp({\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\nView type can be specified one of the following values:\n\n- `compact`: 50% of the screen height of the device. This size can be specified only for the chat screen.\n- `tall`: 80% of the screen height of the device. This size can be specified only for the chat screen.\n- `full`: 100% of the screen height of the device. This size can be specified for any screens in the LINE app.\n\n<br />\n\n## `updateLiffApp(liffId, view)`\n\nUpdates LIFF app settings.\n\n| Param     | Type     | Description                                 |\n| --------- | -------- | ------------------------------------------- |\n| liffId    | `String` | ID of the LIFF app to be updated.           |\n| view.type | `String` | Size of the LIFF app view.                  |\n| view.url  | `String` | URL of the LIFF app. Must start with HTTPS. |\n\nExample:\n\n```js\nclient.updateLiffApp(LIFF_ID, {\n  type: 'compact',\n  url: 'https://example.com/liff-app',\n});\n```\n\n<br />\n\n## `getLiffAppList`\n\nGets information on all the LIFF apps registered in the channel.\n\nExample:\n\n```js\nclient.getLiffApps().then((apps) => {\n  console.log(apps);\n  // [\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'full',\n  //       url: 'https://example.com/myservice',\n  //     },\n  //   },\n  //   {\n  //     liffId: '{liffId}',\n  //     view: {\n  //       type: 'tall',\n  //       url: 'https://example.com/myservice2',\n  //     },\n  //   },\n  // ]\n});\n```\n\n<br />\n\n## `deleteLiffApp(liffId)`\n\nDeletes a LIFF app.\n\n| Param  | Type     | Description                       |\n| ------ | -------- | --------------------------------- |\n| liffId | `String` | ID of the LIFF app to be deleted. |\n\nExample:\n\n```js\nclient.deleteLiffApp(LIFF_ID);\n```\n\n<br />\n\n## Line Pay\n\n## Initialize\n\n```js\nconst { LinePay } = require('messaging-api-line');\n\nconst linePay = new LinePay({\n  channelId: CHANNEL_ID,\n  channelSecret: CHANNEL_SECRET,\n  sandbox: true, // default false\n});\n```\n\n## `getPayments(options)`\n\nGets payment information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getPayments({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 1020140728100001997,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PARTIAL_REFUND',\n    //     amount: -5,\n    //     productName: '',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     originalTransactionId: 1020140728100001999,\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `getAuthorizations(options)`\n\nGets authorization information from LINE Pay.\n\n| Param                 | Type     | Description                            |\n| --------------------- | -------- | -------------------------------------- |\n| options.transactionId | `String` | ID of the transaction.                 |\n| options.orderId       | `String` | A unique number managed by a Merchant. |\n\nExample:\n\n```js\nlinePay\n  .getAuthorizations({\n    transactionId: '20140101123123123',\n    orderId: '1002045572',\n  })\n  .then((result) => {\n    console.log(result);\n    // [\n    //   {\n    //     transactionId: 201612312312333401,\n    //     transactionDate: '2014-07-28T09:48:43Z',\n    //     transactionType: 'PAYMENT',\n    //     payInfo: [\n    //       {\n    //         method: 'BALANCE',\n    //         amount: 10,\n    //       },\n    //       {\n    //         method: 'DISCOUNT',\n    //         amount: 10,\n    //       },\n    //     ],\n\n    //     productName: 'tes production',\n    //     currency: 'USD',\n    //     orderId: '20140101123123123',\n    //     payStatus: 'AUTHORIZATION',\n    //     authorizationExpireDate: '2014-07-28T09:48:43Z',\n    //   },\n    // ]\n  });\n```\n\n<br />\n\n## `reserve(payment)`\n\nReserves payment information in LINE Pay.\n\n| Param                          | Type      | Description                                                |\n| ------------------------------ | --------- | ---------------------------------------------------------- |\n| payment.productName            | `Number`  | Product name.                                              |\n| payment.amount                 | `Number`  | Payment amount.                                            |\n| payment.currency               | `String`  | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n| payment.confirmUrl             | `String`  | Merchant's URL that buyer is redirected to.                |\n| payment.orderId                | `String`  | A unique number managed by a Merchant.                     |\n| payment.productImageUrl        | `String`  | Product image URL. 84 x 84. Optional.                      |\n| payment.mid                    | `String`  | LINE member ID. Optional.                                  |\n| payment.oneTimeKey             | `String`  | One time key. Optional.                                    |\n| payment.confirmUrlType         | `String`  | confirmUrl type. Optional.                                 |\n| payment.checkConfirmUrlBrowser | `Boolean` | Whether to check browser or not. Optional.                 |\n| payment.cancelUrl              | `String`  | Payment cancellation page URL. Optional.                   |\n| payment.packageName            | `String`  | Information to avoid phishing in Android. Optional.        |\n| payment.deliveryPlacePhone     | `String`  | Recipient contact. Optional.                               |\n| payment.payType                | `String`  | Payment types. Optional.                                   |\n| payment.langCd                 | `String`  | Language code. Optional.                                   |\n| payment.capture                | `String`  | Whether to capture or not. Optional.                       |\n| payment.extras                 | `String`  | Optional.                                                  |\n\nExample:\n\n```js\nlinePay\n  .reserve({\n    productName: 'test product',\n    amount: 10,\n    currency: 'USD',\n    orderId: '20140101123456789',\n    confirmUrl:\n      'naversearchapp://inappbrowser?url=http%3A%2F%2FtestMall.com%2FcheckResult.nhn%3ForderId%3D20140101123456789',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 123123123123,\n    //   paymentUrl: {\n    //     web: 'http://web-pay.line.me/web/wait?transactionReserveId=blahblah',\n    //     app: 'line://pay/payment/blahblah',\n    //   },\n    //   paymentAccessToken: '187568751124',\n    // }\n  });\n```\n\n<br />\n\n## `confirm(transactionId, payment)`\n\nCompletes the payment when `capture` parameter is `false` on payment reservation. Otherwise, authorize the payment.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .confirm(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   orderId: 'order_210124213',\n    //   transactionId: 20140101123123123,\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `capture(transactionId, payment)`\n\nCompletes a payment that was only authorized by calling confirm API.\n\n| Param            | Type     | Description                                                |\n| ---------------- | -------- | ---------------------------------------------------------- |\n| transactionId    | `String` | ID of the transaction.                                     |\n| payment.amount   | `Number` | Payment amount.                                            |\n| payment.currency | `String` | Payment currency (ISO 4217). Supported: USD, JPY, TWD, THB |\n\nExample:\n\n```js\nlinePay\n  .capture(TRANSACTION_ID, {\n    amount: 1000,\n    currency: 'TWD',\n  })\n  .then((result) => {\n    console.log(result);\n    // {\n    //   transactionId: 20140101123123123,\n    //   orderId: 'order_210124213',\n    //   payInfo: [\n    //     {\n    //       method: 'BALANCE',\n    //       amount: 10,\n    //     },\n    //     {\n    //       method: 'DISCOUNT',\n    //       amount: 10,\n    //     },\n    //   ],\n    // }\n  });\n```\n\n<br />\n\n## `void(transactionId)`\n\nVoids an authorized transaction.\n\n| Param         | Type     | Description            |\n| ------------- | -------- | ---------------------- |\n| transactionId | `String` | ID of the transaction. |\n\nExample:\n\n```js\nlinePay.void(TRANSACTION_ID);\n```\n\n<br />\n\n## `refund(transactionId, options)`\n\nRequests refund of the payment.\n\n| Param                | Type     | Description            |\n| -------------------- | -------- | ---------------------- |\n| transactionId        | `String` | ID of the transaction. |\n| options.refundAmount | `Number` | Refund amount.         |\n\nExample:\n\n```js\nlinePay.refund(TRANSACTION_ID).then((result) => {\n  console.log(result);\n  // {\n  //   refundTransactionId: 123123123123,\n  //   refundTransactionDate: '2014-01-01T06:17:41Z',\n  // }\n});\n```\n\n<br />\n\n## Debug Tips\n\n### Log Requests Details\n\nTo enable default request debugger, use following `DEBUG` env variable:\n\n```sh\nDEBUG=messaging-api:request\n```\n\nIf you want to use a custom request logging function, just provide your own `onRequest`:\n\n```js\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  onRequest: ({ method, url, headers, body }) => {\n    /* */\n  },\n});\n```\n\n## Testing\n\n### Point Requests to Your Dummy Server\n\nTo avoid sending requests to real LINE server, specify the `origin` option when constructing your client:\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n  origin: 'https://mydummytestserver.com',\n});\n```\n\n> Warning: Don't do this on your production server.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.1.0-alpha.0","_nodeVersion":"13.8.0","_npmVersion":"lerna/3.22.1/node@v13.8.0+x64 (darwin)","dist":{"integrity":"sha512-YDPDwDoT19mqVdlWxqfOGMVtw5unoIiZXUUKUyOXNgnIBYDU3NxfCGDWHbvsVzWouZZ0c+WZ3UAoTVedwM55tA==","shasum":"84d3d663684b3449d20b25aa582f2f7fb768ed91","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.1.0-alpha.0.tgz","fileCount":58,"unpackedSize":1167435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJflmOtCRA9TVsSAnZWagAAzRkQAIFswR8wLuTUkltMsnxj\noqlBC3mukpmhC+uySlZ3HZMbEu4BZkO8os29GeQqz6DwO+XqnpcR8PSuMEnk\n0TkC7+2DfcoXYN8mvz4VELOEgonbODKdqqS5tOzGdT9elh7uDsaKWIzhVowC\nt5vOCtLOzTWXUVuKD02zLRekX1lmok/CuQPHMsUJ8PXjOmHTMilP49rVadv3\nQ1uGmcPj0BdV1CCzSakkxDna+tIqHQ1DXGtW062HnqAHvBatHWUBKhVZAz2h\nBCQjPbPTkV4tMN/3o1BJGb4uL/krK/LEVGYv0UYFQypan04AP351femppvD1\nMiVHMmPGwSvMFca8wwPkWDvYLxnZ9tLHSa038NjTbeVGCx19U+BwA7CMi/YI\n1XLFtvnMryEIVKaOtMDCGHXmtdHPju1y3Xc6AVH5sFXL7fg7xDqyZbyE7x+q\nKFiXOePrxrSLik+pv7Pz9tYofdenUh0K17nWYXDu8aAa4YgRZ7TXXgtDh8VI\nJ22djoXrJO61H7/g+wLsRTSKBMZDqZtysYY3cfxt7ZX1QzDtFkmV+jOogslm\nu0wK8+YhzBFXrmUtuWUWEX3+V+CloU9ggWuE5DH4CY1WLIyU56uF1zax3w8a\nAyqgNcig6/7dpfVSLbX7LHtQnxt2p2QBasGwRAYSRxmzcUHJuIZ5SH1kvSt3\n9trC\r\n=l63v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID/VSDqgavFNLv1PXizXh7I/3JacuEN9VL3HvkQdHuycAiEAqoJs4cAEY33op7uWVCEGyrJZYRkt/ULBxz4Dh3cG6lU="}]},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"}],"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.1.0-alpha.0_1603691437018_0.9321844060890792"},"_hasShrinkwrap":false},"1.0.4":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.4","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.21.1","axios-error":"^1.0.4","image-type":"^4.1.0","messaging-api-common":"^1.0.4","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"8d0a6e0549448e353ce90878b2fe1d71db1d0596","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.4","_nodeVersion":"14.15.0","_npmVersion":"lerna/3.22.1/node@v14.15.0+x64 (darwin)","dist":{"integrity":"sha512-WG6spzBCuT7bCj2wjlFKApXqwNRLlsdCap+er7Gcm/8WVkUDuNDRe1eSIOiCayaG7c58FD+zxKogOLngp8ezRA==","shasum":"0ec35ded732dd7b8bea9f2d6ba7db10eec15d5c4","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.4.tgz","fileCount":57,"unpackedSize":1152555,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf++q4CRA9TVsSAnZWagAAaKQP/1F8krKU4BHmVM5jXZJd\n5JT70vDC276uhWZpNC5zO7X+D/FKmqVLNSnOUwiSi48zCH+VeES7Wp7acVS7\n1WudcUjFSiKPxNUV5FLLI9MO9oJsU+4jytKoRmVGpxYfP70Wxdjn/r182Pu+\n6I+J7VyodhhLQyFiJp9W5x8vHbeo3hZ3nTsM7+hH6mi0eUaWc4sl1NjttP6M\ncJAUdK80nrX2siGKxvbGAKp4+GIQnmhZQoIqhRuXT/TnKFoDvjX2ixTt1wsH\nzhjEOL7vzL0QwZHr5rg+BI8NKmY0RV+IpbwsJLAvWKaXMXvRaH5jq0Y/UgXX\n5CueTep+Guhokq8TiypIQM5z3q4bL8lejgY/n+HxC6dDYder1w+ILDiR6hxI\nfKAmVEonDe22noOJz0jPbfub7NuH/KfJzRhUymBIel5PjYLEDGqEO7lOxhQI\ntZ/+3klW5DDUkrv7Zury+xgBEqT9Bkvfx2SXejCBOSXHk+7gX8yXZyEScXuv\nrS1V4lp54RsnlkmRoBklX3jqMYpsIUzs0tQnr6Sonh18DVc0j5+Rm3K3GvFC\ncu2ZC3ZC1EAHmRjcKrs6wars9epizxUOGyfoATffbdO+rN8kHr9jjUf0bPNi\npg8/Ok8QVgWELw4gaLmR6U9wZ4gSGD2ScTZGSbC1PmR0whpg+WUFlTcJGiUh\naVoa\r\n=P5Lt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCRL9FSySbNXHdCZF03CMNUvSxp9tDpzHv0fYVH55eUewIgA1rKNSYbnY2utHI9UsDTrbJBFg2NBuWExbMhsCd6jRQ="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.4_1610345144140_0.25219193633032444"},"_hasShrinkwrap":false},"1.0.6":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.0.6","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.21.1","axios-error":"^1.0.4","image-type":"^4.1.0","messaging-api-common":"^1.0.4","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"785284584a31f3c3a9daa63497ba7b0d6b7a2eb4","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.0.6","_nodeVersion":"14.17.5","_npmVersion":"lerna/3.22.1/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-RlJTonApLF4X4zR//9l0+cjCfrxng9InqHGZPya5Afr6PhGmLttzjOFkGVLE5uOM/RpiivciylueAay2tBu9Gw==","shasum":"e723e838726652ee513ee6caf400632575169f0c","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.0.6.tgz","fileCount":57,"unpackedSize":1152110,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMQrYCRA9TVsSAnZWagAABusP/12HcjGMs4/mRMDeF7YQ\nEqHDqFq1UKtFYAqIx1/yB0e2sWZ9Bb4CmUP/2Ugo2em/uMdgtiH4ITspKnBx\n229pKCq3zX8jJlhwhhz/yb/Q3pgw+Me4ounFGLAYj9BrF+svfeM1jGYRizGE\nhs8XvcTxQyuC8mFsOrEWrUVrra9rrcyUB1p7Y6c+gW7rtbDW4oOL862Bq6M3\nR/VKMuwIbZTCLmEWp0A9fxzliFJ9GQduvLfLr33UkjOBgfo9wLTChOlVfEqi\nSt/iWjCHf/XTLRnHhXmaON0uVu71GsU4qkD8sNSpi9fzEV3McExX4CYHVQVR\nihKOosrFK10vnSzGy/K0XiRk9GMND64e+8buqcWT7n6qkX7wLYGtB12vXhFF\nXrnRwD/JyYPwl6+IeK2XVqd8V4vQ2phdqGMj8GaJB5UGdpfGBx5lWPdKvtgj\nbzPcxhFPcUeCttTiVzvg3n+SMCC8YYdKrAt5wzWn6bsXdK+Q7OZqEZ51cTql\nxWnxNgm2EGXf2Zov6x0xqVtsNWNz3/vsy6D3GqvcHFJANO+JCl5yLKuG2mtu\nFSE/uShlK5L2x76F3XWTnnOQbraCmF75dyi2iwE0ZcHpRUYw0TshuXSD60da\nOyov4VVPmCb0e6fNbLA+Om5tkKXeF6UhJxsdh3I6KpyPomkOjcKNtPMxrUq9\nc41u\r\n=N3as\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCS4IdzP950YcHRKvLCF6Sii8W57n6bz/wAG5r6cFj9PgIhAIJ5to8ymeu/QlmmESauiJtDCdqkflMJW0wvqr+TIgg6"}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.0.6_1630603992561_0.6601660551032646"},"_hasShrinkwrap":false},"1.1.0":{"name":"messaging-api-line","description":"Messaging API client for LINE","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"version":"1.1.0","main":"dist/index.js","browser":"lib/browser.js","types":"dist/index.d.ts","dependencies":{"@types/warning":"^3.0.0","axios":"^0.21.1","axios-error":"^1.0.4","image-type":"^4.1.0","messaging-api-common":"^1.0.4","ts-invariant":"^0.4.4","type-fest":"^0.15.1","warning":"^4.0.3"},"keywords":["bot","chatbot","line","messaging-apis"],"engines":{"node":">=10"},"gitHead":"7df9e3bba37712e0892f14895576c42c949d3003","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"},"homepage":"https://github.com/Yoctol/messaging-apis#readme","_id":"messaging-api-line@1.1.0","_nodeVersion":"14.17.5","_npmVersion":"lerna/4.0.0/node@v14.17.5+x64 (darwin)","dist":{"integrity":"sha512-0ZwrovcIk9r88V8B4o7xKK8KDxefpqcGq/QdGDJ4ImCekjT+x6tH4Z38VYrfPgzJ6FPXGPZSWAR6r91zYmQIPQ==","shasum":"96dbc77625a9e228d29dcad41bdf8c838344353e","tarball":"https://registry.npmjs.org/messaging-api-line/-/messaging-api-line-1.1.0.tgz","fileCount":59,"unpackedSize":1065144,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2zFmCRA9TVsSAnZWagAAawMP/1AKdSKhhXIr4zPH2DLe\nAxbR09erQcrQA18aEReA1phQKMwGn9ypVpvUjEJPA2W8g/FWpUz7/r+ztepp\nnlqkcWBwI/kjOnxIoa4DJPATGjsspMVm9WEyyKO3EQfJOJahwgRIdSUn1Hzc\ngNh926fe9r3N/9EVsTJy+o8C8q0qG0wyExGQhPTMB3EliksrOQqQiUCXBaj0\nyKtI/SWPtctc24v1jz/7ILlIYyuIC+mgJYrm4wD6EejuncynCITTcXAjOF0t\n4Czp6HD85HblzK1kGL8P2Frm2qwQlRvATv5tClHW5szteMGTUcjU/BnfSs7U\n3qWsDuyB9cmZhJQUu0fARS1AsBeh0Go42vJThnBmrrXXJarI7lmKUKC/U88O\nBZ9aqBZdL1MgrzswAblVXUsQQCM3iay+E+bjqx2rq1XhVgLEeaC7C7W9drSv\nN62ejlPkNaTapoKfLtiBo6Kv4/goDCRSrOeFQzXQ1/2q9QblQXqmykYvXlZG\n4WfzlauG6XKVQdzHQ9XWsyf3le3RNvZC1zMkdLidVFO+IHgguQzlwJ7Ly/Z6\n4Y+IKIqzZpxacDKi/nXXnqMVqD0/1kUYMLg/hAuaLQbpJ+AU5lPtQIBTMGOS\nTnmE/UsON0APsV+FyEa0yl9H4qPDSktTe+c1gG6B/33/rpCNkljH6gtwaXIX\nOn7C\r\n=rm92\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCK1rwsIqiTZGcZx6o4AU8uDQ7c/3lNrkyJcXYJJvTkwAIgebo0NGZObXdxJvSy5f81A+9YEE0xokfY3/K8PDmV5dc="}]},"_npmUser":{"name":"chentsulin","email":"chentsulin@gmail.com"},"directories":{},"maintainers":[{"name":"chentsulin","email":"chentsulin@gmail.com"},{"name":"kpman","email":"s92f002@gmail.com"},{"name":"tw0517tw","email":"tw0517tw@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/messaging-api-line_1.1.0_1633326871026_0.5023506043318666"},"_hasShrinkwrap":false}},"readme":"# messaging-api-line\n\n> Messaging API client for LINE\n\n<img src=\"http://is5.mzstatic.com/image/thumb/Purple117/v4/01/c2/4d/01c24d99-4aae-71ea-24e2-d0b68f8c53d2/source/1200x630bb.jpg\" alt=\"LINE\" width=\"150\" />\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API Reference](#api-reference)\n  - [Reply API](#reply-api)\n    - [Imagemap Messages](#reply-imagemap-messages)\n    - [Template Messages](#reply-template-messages)\n    - [Flex Messages](#reply-flex-messages)\n  - [Push API](#push-api)\n    - [Imagemap Messages](#push-imagemap-messages)\n    - [Template Messages](#push-template-messages)\n    - [Flex Messages](#push-flex-messages)\n  - [Multicast API](#multicast-api)\n    - [Imagemap Messages](#multicast-imagemap-messages)\n    - [Template Messages](#multicast-template-messages)\n    - [Flex Messages](#multicast-flex-messages)\n  - [Quick Replies](#quick-replies)\n  - [Content API](#content-api)\n  - [Profile API](#profile-api)\n  - [Group/Room Member Profile API](#grouproom-member-profile-api)\n  - [Group/Room Member IDs API](#grouproom-member-ids-api)\n  - [Leave API](#leave-api)\n  - [Rich Menu API](#rich-menu-api)\n  - [Account Link API](#account-link-api)\n  - [LINE Front-end Framework API](#liff-api)\n  - [LINE Pay](#line-pay)\n- [Debug Tips](#debug-tips)\n- [Testing](#testing)\n\n## Installation\n\n```sh\nnpm i --save messaging-api-line\n```\n\nor\n\n```sh\nyarn add messaging-api-line\n```\n\n<br />\n\n## Usage\n\n### Initialize\n\n```js\nconst { LineClient } = require('messaging-api-line');\n\n// get accessToken and channelSecret from LINE developers website\nconst client = new LineClient({\n  accessToken: ACCESS_TOKEN,\n  channelSecret: CHANNEL_SECRET,\n});\n```\n\n### Error Handling\n\n`messaging-api-line` uses [axios](https://github.com/axios/axios) as HTTP client. We use [axios-error](https://github.com/Yoctol/messaging-apis/tree/master/packages/axios-error) package to wrap API error instances for better formatting error messages. Directly calling `console.log` with the error instance will return formatted message. If you'd like to get the axios `request`, `response`, or `config`, you can still get them via those keys on the error instance.\n\n```js\nclient.replyText(token, text).catch((error) => {\n  console.log(error); // formatted error message\n  console.log(error.stack); // error stack trace\n  console.log(error.config); // axios request config\n  console.log(error.request); // HTTP request\n  console.log(error.response); // HTTP response\n});\n```\n\n<br />\n\n## API Reference\n\nAll methods return a Promise.\n\n<br />\n\n<a id=\"reply-api\" />\n\n### Reply API - [Official Docs](https://developers.line.me/en/reference/messaging-api/#send-reply-message)\n\nResponds to events from users, groups, and rooms.\n\n## `reply(token, messages)`\n\nResponds messages using specified reply token.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| token    | `String`        | `replyToken` received via webhook.                                      |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.reply(REPLY_TOKEN, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n`replyToken` can only be used once, but you can send up to 5 messages using the same token.\n\n```js\nconst { Line } = require('messaging-api-line');\n\nclient.reply(REPLY_TOKEN, [\n  Line.createText('Hello'),\n  Line.createImage({\n    originalContentUrl: 'https://example.com/original.jpg',\n    previewImageUrl: 'https://example.com/preview.jpg',\n  }),\n  Line.createText('End'),\n]);\n```\n\nThere are a bunch of factory methods can be used to create messages:\n\n- `Line.createText(text, options)`\n- `Line.createImage(image, options)`\n- `Line.createVideo(video, options)`\n- `Line.createAudio(audio, options)`\n- `Line.createLocation(location, options)`\n- `Line.createSticker(sticker, options)`\n- `Line.createImagemap(altText, imagemap, options)`\n- `Line.createTemplate(altText, template, options)`\n- `Line.createButtonTemplate(altText, buttonTemplate, options)`\n- `Line.createConfirmTemplate(altText, confirmTemplate, options)`\n- `Line.createCarouselTemplate(altText, columns, options)`\n- `Line.createImageCarouselTemplate(altText, columns, options)`\n- `Line.createFlex(altText, contents, options)`\n\n<br />\n\n## `replyText(token, text, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#text-message)\n\nResponds text message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyText(REPLY_TOKEN, 'Hello!');\n```\n\n<br />\n\n## `replyImage(token, image, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#image-message)\n\nResponds image message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyImage(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyVideo(token, video, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#video-message)\n\nResponds video message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyVideo(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `replyAudio(token, audio, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#audio-message)\n\nResponds audio message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyAudio(REPLY_TOKEN, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `replyLocation(token, location, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#location-message)\n\nResponds location message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyLocation(REPLY_TOKEN, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `replySticker(token, sticker, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#sticker-message)\n\nResponds sticker message using specified reply token.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replySticker(REPLY_TOKEN, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Reply Imagemap Messages\n\n## `replyImagemap(token, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#imagemap-message)\n\nResponds imagemap message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                          |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.replyImagemap(REPLY_TOKEN, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Reply Template Messages\n\n## `replyTemplate(token, altText, template, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#template-messages)\n\nResponds template message using specified reply token.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.           |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.replyTemplate(REPLY_TOKEN, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyButtonTemplate(token, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#buttons)\n\nAlias: `replyButtonsTemplate`.\n\nResponds button template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| token                               | `String`        | `replyToken` received via webhook.                                                            |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.replyButtonTemplate(REPLY_TOKEN, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyConfirmTemplate(token, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#confirm)\n\nResponds confirm template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.            |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.replyConfirmTemplate(REPLY_TOKEN, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `replyCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#carousel)\n\nResponds carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                                                    |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.replyCarouselTemplate(REPLY_TOKEN, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `replyImageCarouselTemplate(token, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#image-carousel)\n\nResponds image carousel template message using specified reply token.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| token                    | `String`        | `replyToken` received via webhook.                         |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.replyImageCarouselTemplate(\n  REPLY_TOKEN,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Reply Flex Messages\n\n## `replyFlex(token, altText, contents, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#flex-message)\n\nResponds flex message using specified reply token.\n\n<img src=\"https://developers.line.biz/media/messaging-api/using-flex-messages/bubbleSamples-Update1-c3e3fbf2.png\" />\n\n| Param                    | Type     | Description                                                                                        |\n| ------------------------ | -------- | -------------------------------------------------------------------------------------------------- |\n| token                    | `String` | `replyToken` received via webhook.                                                                 |\n| altText                  | `String` | Alternative text.                                                                                  |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/reference/messaging-api/#container) object. |\n| options                  | `Object` | Optional options.                                                                                  |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                       |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                 |\n\nExample:\n\n```js\nclient.replyFlex(REPLY_TOKEN, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"push-api\" />\n\n### Push API - [Official Docs](https://developers.line.me/en/reference/messaging-api/#send-push-message)\n\nSends messages to a user, group, or room at any time.\n\n## `push(userId, messages)`\n\nSends messages using ID of the receiver.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userId   | `String`        | ID of the receiver.                                                     |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.push(USER_ID, [\n  {\n    type: 'text',\n    text: 'Hello!',\n  },\n]);\n```\n\n<br />\n\n## `pushText(userId, text, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#text-message)\n\nSends text message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| text                     | `String` | Text of the message to be sent.              |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushText(USER_ID, 'Hello!');\n```\n\n<br />\n\n## `pushImage(userId, image, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#image-message)\n\nSends image message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| image.originalContentUrl | `String` | Image URL.                                   |\n| image.previewImageUrl    | `String` | Preview image URL.                           |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushImage(USER_ID, {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushVideo(userId, video, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#video-message)\n\nSends video message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| video.originalContentUrl | `String` | URL of video file.                           |\n| video.previewImageUrl    | `String` | URL of preview image.                        |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushVideo(USER_ID, {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `pushAudio(userId, audio, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#audio-message)\n\nSends audio message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| audio.originalContentUrl | `String` | URL of audio file.                           |\n| audio.duration           | `Number` | Length of audio file (milliseconds).         |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushAudio(USER_ID, {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `pushLocation(userId, location, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#location-message)\n\nSends location message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| location                 | `Object` | Object contains location's parameters.       |\n| location.title           | `String` | Title of the location.                       |\n| location.address         | `String` | Address of the location.                     |\n| location.latitude        | `Number` | Latitude of the location.                    |\n| location.longitude       | `Number` | Longitude of the location.                   |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushLocation(USER_ID, {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `pushSticker(userId, sticker, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#sticker-message)\n\nSends sticker message using ID of the receiver.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| sticker.packageId        | `String` | Package ID.                                  |\n| sticker.stickerId        | `String` | Sticker ID.                                  |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushSticker(USER_ID, { packageId: '1', stickerId: '1' });\n```\n\n<br />\n\n### Push Imagemap Messages\n\n## `pushImagemap(userId, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#imagemap-message)\n\nSends imagemap message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                         |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                                               |\n| imagemap.video.previewImageUrl      | `String`        | URL of the preview image (Max: 1000 characters).                                            |\n| imagemap.video.area.x               | `Number`        | Horizontal position of the video area relative to the top-left corner of the imagemap area. |\n| imagemap.video.area.y               | `Number`        | Vertical position of the video area relative to the top-left corner of the imagemap area.   |\n| imagemap.video.area.width           | `Number`        | Width of the video area.                                                                    |\n| imagemap.video.area.height          | `Number`        | Height of the video area.                                                                   |\n| imagemap.video.externalLink.linkUri | `String`        | Webpage URL. Called when the label displayed after the video is tapped.                     |\n| imagemap.video.externalLink.label   | `String`        | Label. Displayed after the video is finished.                                               |\n| imagemap.actions                    | `Array<Object>` | Action when tapped.                                                                         |\n| options                             | `Object`        | Optional options.                                                                           |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                          |\n\nExample:\n\n```js\nclient.pushImagemap(USER_ID, 'this is an imagemap', {\n  baseUrl: 'https://example.com/bot/images/rm001',\n  baseSize: {\n    width: 1040,\n    height: 1040,\n  },\n  actions: [\n    {\n      type: 'uri',\n      linkUri: 'https://example.com/',\n      area: {\n        x: 0,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n    {\n      type: 'message',\n      text: 'hello',\n      area: {\n        x: 520,\n        y: 0,\n        width: 520,\n        height: 1040,\n      },\n    },\n  ],\n});\n```\n\n<br />\n\n### Push Template Messages\n\n## `pushTemplate(userId, altText, template, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#template-messages)\n\nSends template message using ID of the receiver.\n\n| Param                    | Type     | Description                                  |\n| ------------------------ | -------- | -------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                          |\n| altText                  | `String` | Alternative text.                            |\n| template                 | `Object` | Object with the contents of the template.    |\n| options                  | `Object` | Optional options.                            |\n| options.quickReply       | `Object` | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`  | Quick reply items.                           |\n\nExample:\n\n```js\nclient.pushTemplate(USER_ID, 'this is a template', {\n  type: 'buttons',\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushButtonTemplate(userId, altText, buttonTemplate, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#buttons)\n\nAlias: `pushButtonsTemplate`.\n\nSends button template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/buttons-86e14165.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                   |\n| ----------------------------------- | --------------- | --------------------------------------------------------------------------------------------- |\n| userId                              | `String`        | ID of the receiver.                                                                           |\n| altText                             | `String`        | Alternative text.                                                                             |\n| buttonTemplate                      | `Object`        | Object contains buttonTemplate's parameters.                                                  |\n| buttonTemplate.thumbnailImageUrl    | `String`        | Image URL of buttonTemplate.                                                                  |\n| buttonTemplate.imageAspectRatio     | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square`         |\n| buttonTemplate.imageSize            | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`                    |\n| buttonTemplate.imageBackgroundColor | `String`        | Background color of image. Specify a RGB color value. The default value is `#FFFFFF` (white). |\n| buttonTemplate.title                | `String`        | Title of buttonTemplate.                                                                      |\n| buttonTemplate.text                 | `String`        | Message text of buttonTemplate.                                                               |\n| buttonTemplate.defaultAction        | `Object`        | Action when image is tapped; set for the entire image, title, and text area.                  |\n| buttonTemplate.actions              | `Array<Object>` | Action when tapped.                                                                           |\n| options                             | `Object`        | Optional options.                                                                             |\n| options.quickReply                  | `Object`        | Quick reply object to attach to the message.                                                  |\n| options.quickReply.items            | `Array`         | Quick reply items.                                                                            |\n\nExample:\n\n```js\nclient.pushButtonTemplate(USER_ID, 'this is a template', {\n  thumbnailImageUrl: 'https://example.com/bot/images/image.jpg',\n  title: 'Menu',\n  text: 'Please select',\n  actions: [\n    {\n      type: 'postback',\n      label: 'Buy',\n      data: 'action=buy&itemid=123',\n    },\n    {\n      type: 'postback',\n      label: 'Add to cart',\n      data: 'action=add&itemid=123',\n    },\n    {\n      type: 'uri',\n      label: 'View detail',\n      uri: 'http://example.com/page/123',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushConfirmTemplate(userId, altText, confirmTemplate, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#confirm)\n\nSends confirm template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/confirm-444aead5.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                   |\n| ------------------------ | --------------- | --------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                           |\n| altText                  | `String`        | Alternative text.                             |\n| confirmTemplate          | `Object`        | Object contains confirmTemplate's parameters. |\n| confirmTemplate.text     | `String`        | Message text of confirmTemplate.              |\n| confirmTemplate.actions  | `Array<Object>` | Action when tapped.                           |\n| options                  | `Object`        | Optional options.                             |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.  |\n| options.quickReply.items | `Array`         | Quick reply items.                            |\n\nExample:\n\n```js\nclient.pushConfirmTemplate(USER_ID, 'this is a confirm template', {\n  text: 'Are you sure?',\n  actions: [\n    {\n      type: 'message',\n      label: 'Yes',\n      text: 'yes',\n    },\n    {\n      type: 'message',\n      label: 'No',\n      text: 'no',\n    },\n  ],\n});\n```\n\n<br />\n\n## `pushCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#carousel)\n\nSends carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/carousel-c59baef6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                                           |\n| ------------------------ | --------------- | ------------------------------------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                                                   |\n| altText                  | `String`        | Alternative text.                                                                     |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for carousel.                                  |\n| options                  | `Object`        | Object contains options.                                                              |\n| options.imageAspectRatio | `String`        | Aspect ratio of the image. Specify one of the following values: `rectangle`, `square` |\n| options.imageSize        | `String`        | Size of the image. Specify one of the following values: `cover`, `contain`            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.                                          |\n| options.quickReply.items | `Array`         | Quick reply items.                                                                    |\n\nExample:\n\n```js\nclient.pushCarouselTemplate(USER_ID, 'this is a carousel template', [\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item1.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=111',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/111',\n      },\n    ],\n  },\n  {\n    thumbnailImageUrl: 'https://example.com/bot/images/item2.jpg',\n    title: 'this is menu',\n    text: 'description',\n    actions: [\n      {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=222',\n      },\n      {\n        type: 'postback',\n        label: 'Add to cart',\n        data: 'action=add&itemid=222',\n      },\n      {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    ],\n  },\n]);\n```\n\n<br />\n\n## `pushImageCarouselTemplate(userId, altText, carouselItems, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#image-carousel)\n\nSends image carousel template message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-carousel-301701f6.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                                |\n| ------------------------ | --------------- | ---------------------------------------------------------- |\n| userId                   | `String`        | ID of the receiver.                                        |\n| altText                  | `String`        | Alternative text.                                          |\n| carouselItems            | `Array<Object>` | Array of columns which contains object for image carousel. |\n| options                  | `Object`        | Optional options.                                          |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message.               |\n| options.quickReply.items | `Array`         | Quick reply items.                                         |\n\nExample:\n\n```js\nclient.pushImageCarouselTemplate(\n  USER_ID,\n  'this is an image carousel template',\n  [\n    {\n      imageUrl: 'https://example.com/bot/images/item1.jpg',\n      action: {\n        type: 'postback',\n        label: 'Buy',\n        data: 'action=buy&itemid=111',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item2.jpg',\n      action: {\n        type: 'message',\n        label: 'Yes',\n        text: 'yes',\n      },\n    },\n    {\n      imageUrl: 'https://example.com/bot/images/item3.jpg',\n      action: {\n        type: 'uri',\n        label: 'View detail',\n        uri: 'http://example.com/page/222',\n      },\n    },\n  ]\n);\n```\n\n<br />\n\n### Push Flex Messages\n\n## `pushFlex(userId, altText, contents, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#flex-message)\n\nSends flex message using ID of the receiver.\n\n<img src=\"https://developers.line.me/media/messaging-api/using-flex-messages/bubbleSample-77d825e6.png\" />\n\n| Param                    | Type     | Description                                                                                        |\n| ------------------------ | -------- | -------------------------------------------------------------------------------------------------- |\n| userId                   | `String` | ID of the receiver.                                                                                |\n| altText                  | `String` | Alternative text.                                                                                  |\n| contents                 | `Object` | Flex Message [container](https://developers.line.me/en/reference/messaging-api/#container) object. |\n| options                  | `Object` | Optional options.                                                                                  |\n| options.quickReply       | `Object` | Quick reply object to attach to the message.                                                       |\n| options.quickReply.items | `Array`  | Quick reply items.                                                                                 |\n\nExample:\n\n```js\nclient.pushFlex(USER_ID, 'this is a flex', {\n  type: 'bubble',\n  header: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Header text',\n      },\n    ],\n  },\n  hero: {\n    type: 'image',\n    url: 'https://example.com/flex/images/image.jpg',\n  },\n  body: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Body text',\n      },\n    ],\n  },\n  footer: {\n    type: 'box',\n    layout: 'vertical',\n    contents: [\n      {\n        type: 'text',\n        text: 'Footer text',\n      },\n    ],\n  },\n  styles: {\n    comment: 'See the example of a bubble style object',\n  },\n});\n```\n\n<br />\n\n<a id=\"multicast-api\" />\n\n### Multicast API - [Official Docs](https://developers.line.me/en/reference/messaging-api/#send-multicast-messages)\n\nSends messages to multiple users at any time.\n\n## `multicast(userIds, messages)`\n\nSends messages to multiple users.\n\n| Param    | Type            | Description                                                             |\n| -------- | --------------- | ----------------------------------------------------------------------- |\n| userIds  | `Array<String>` | IDs of the receivers.                                                   |\n| messages | `Array<Object>` | Array of objects which contains the contents of the message to be sent. |\n\nExample:\n\n```js\nclient.multicast(\n  [USER_ID],\n  [\n    {\n      type: 'text',\n      text: 'Hello!',\n    },\n  ]\n);\n```\n\n<br />\n\n## `multicastText(userIds, text, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#text-message)\n\nSends text message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/text-bf530b30.png\" width=\"250px\" />\n\nYou can include LINE original emoji in text messages using character codes. For a list of LINE emoji that can be sent in LINE chats, see the [emoji list](https://developers.line.me/media/messaging-api/emoji-list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/emoji-b3285d27.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| text                     | `String`        | Text of the message to be sent.              |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastText([USER_ID], 'Hello!');\n```\n\n<br />\n\n## `multicastImage(userIds, image, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#image-message)\n\nSends image message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/image-167efb33.png\" width=\"250px\" /><img src=\"https://developers.line.me/media/messaging-api/messages/image-full-04fbba55.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| image.originalContentUrl | `String`        | Image URL.                                   |\n| image.previewImageUrl    | `String`        | Preview image URL.                           |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastImage([USER_ID], {\n  originalContentUrl: 'https://example.com/original.jpg',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastVideo(userIds, video, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#video-message)\n\nSends video message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/video-a1bc08a4.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| video.originalContentUrl | `String`        | URL of video file.                           |\n| video.previewImageUrl    | `String`        | URL of preview image.                        |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastVideo([USER_ID], {\n  originalContentUrl: 'https://example.com/original.mp4',\n  previewImageUrl: 'https://example.com/preview.jpg',\n});\n```\n\n<br />\n\n## `multicastAudio(userIds, audio, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#audio-message)\n\nSends audio message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/audio-6290d91b.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| audio.originalContentUrl | `String`        | URL of audio file.                           |\n| audio.duration           | `Number`        | Length of audio file (milliseconds).         |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastAudio([USER_ID], {\n  originalContentUrl: 'https://example.com/original.m4a',\n  duration: 240000,\n});\n```\n\n<br />\n\n## `multicastLocation(userIds, location, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#location-message)\n\nSends location message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/location-8f9b6b79.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| location                 | `Object`        | Object contains location's parameters.       |\n| location.title           | `String`        | Title of the location.                       |\n| location.address         | `String`        | Address of the location.                     |\n| location.latitude        | `Number`        | Latitude of the location.                    |\n| location.longitude       | `Number`        | Longitude of the location.                   |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastLocation([USER_ID], {\n  title: 'my location',\n  address: '〒150-0002 東京都渋谷区渋谷２丁目２１−１',\n  latitude: 35.65910807942215,\n  longitude: 139.70372892916203,\n});\n```\n\n<br />\n\n## `multicastSticker(userIds, sticker, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#sticker-message)\n\nSends sticker message to multiple users.  \nFor a list of stickers that can be sent with the Messaging API, see the [sticker list](https://developers.line.me/media/messaging-api/messages/sticker_list.pdf).\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/sticker-cb1a6a3a.png\" width=\"250px\" />\n\n| Param                    | Type            | Description                                  |\n| ------------------------ | --------------- | -------------------------------------------- |\n| userIds                  | `Array<String>` | IDs of the receivers.                        |\n| sticker.packageId        | `String`        | Package ID.                                  |\n| sticker.stickerId        | `String`        | Sticker ID.                                  |\n| options                  | `Object`        | Optional options.                            |\n| options.quickReply       | `Object`        | Quick reply object to attach to the message. |\n| options.quickReply.items | `Array`         | Quick reply items.                           |\n\nExample:\n\n```js\nclient.multicastSticker([USER_ID], {\n  packageId: '1',\n  stickerId: '1',\n});\n```\n\n<br />\n\n### Multicast Imagemap Messages\n\n## `multicastImagemap(userIds, altText, imagemap, options)` - [Official Docs](https://developers.line.me/en/reference/messaging-api/#imagemap-message)\n\nSends imagemap message to multiple users.\n\n<img src=\"https://developers.line.me/media/messaging-api/messages/imagemap-dd854fa7.png\" width=\"250px\" />\n\n| Param                               | Type            | Description                                                                                 |\n| ----------------------------------- | --------------- | ------------------------------------------------------------------------------------------- |\n| userIds                             | `Array<String>` | IDs of the receivers.                                                                       |\n| altText                             | `String`        | Alternative text.                                                                           |\n| imagemap                            | `Object`        | Object contains imagemap's parameters.                                                      |\n| imagemap.baseUrl                    | `String`        | Base URL of image.                                                                          |\n| imagemap.baseSize                   | `Object`        | Base size object.                                                                           |\n| imagemap.baseSize.width             | `Number`        | Width of base image.                                                                        |\n| imagemap.baseSize.height            | `Number`        | Height of base image.                                                                       |\n| imagemap.video                      | `Object`        | Video object.                                                                               |\n| imagemap.video.originalContentUrl   | `String`        | URL of the video file (Max: 1000 characters).                             ","maintainers":[{"email":"chentsulin@gmail.com","name":"chentsulin"},{"email":"et284vu065k3@gmail.com","name":"etrexkuo"},{"email":"tw0517tw@gmail.com","name":"tw0517tw"},{"email":"wtflink515@gmail.com","name":"link515"},{"email":"s92f002@gmail.com","name":"kpman"}],"time":{"modified":"2022-06-19T18:05:10.723Z","created":"2017-05-11T05:44:25.607Z","0.1.0-1":"2017-05-11T05:44:25.607Z","0.1.0-2":"2017-05-12T10:19:04.966Z","0.1.0":"2017-06-21T14:02:50.812Z","0.1.1":"2017-06-22T07:43:40.358Z","0.2.0":"2017-06-29T08:08:03.368Z","0.2.1":"2017-07-06T05:07:18.183Z","0.2.2":"2017-07-11T02:44:33.505Z","0.2.3":"2017-07-13T06:35:35.965Z","0.2.4":"2017-08-02T08:15:20.786Z","0.3.0":"2017-08-29T07:36:48.426Z","0.3.2":"2017-09-05T01:12:09.733Z","0.3.3":"2017-09-07T07:49:08.666Z","0.3.4":"2017-09-13T10:14:43.346Z","0.3.5":"2017-09-14T16:15:17.989Z","0.4.0":"2017-09-19T10:45:20.761Z","0.4.1":"2017-09-19T11:17:59.959Z","0.4.2":"2017-09-22T01:43:32.471Z","0.4.4":"2017-10-11T08:03:23.991Z","0.5.0-0":"2017-10-20T06:56:56.729Z","0.5.0":"2017-10-20T07:18:37.831Z","0.5.2":"2017-10-26T04:09:09.744Z","0.5.4-0":"2017-10-30T04:41:41.382Z","0.5.4":"2017-10-30T05:24:58.028Z","0.5.5":"2017-11-01T08:41:30.691Z","0.5.7":"2017-11-09T09:33:16.844Z","0.5.14":"2017-11-29T10:05:00.325Z","0.5.16":"2017-12-05T07:50:02.397Z","0.6.0":"2017-12-07T04:13:46.090Z","0.6.1":"2017-12-08T15:19:20.998Z","0.6.7":"2017-12-22T10:57:50.868Z","0.7.0-alpha.1":"2018-01-22T06:36:29.150Z","0.6.12":"2018-02-05T01:59:39.508Z","0.7.0-alpha.2":"2018-02-05T02:05:21.424Z","0.6.13":"2018-02-12T08:03:28.490Z","0.6.16":"2018-02-27T10:36:48.095Z","0.7.0-beta.1":"2018-03-26T08:59:26.760Z","0.7.0-beta.2":"2018-03-28T08:09:00.046Z","0.7.0-beta.3":"2018-04-02T06:26:59.431Z","0.7.0-beta.4":"2018-04-03T06:39:59.067Z","0.7.0-beta.5":"2018-04-03T09:39:36.096Z","0.7.0-rc.1":"2018-04-09T08:14:20.945Z","0.7.0-rc.2":"2018-04-17T04:19:56.054Z","0.7.0-rc.3":"2018-04-24T03:52:47.492Z","0.7.0":"2018-04-27T13:30:35.229Z","0.7.2":"2018-06-08T04:11:22.579Z","0.7.3":"2018-06-19T04:00:04.593Z","0.7.4":"2018-07-12T04:15:08.182Z","0.7.5":"2018-08-04T12:20:30.037Z","0.7.6":"2018-08-23T07:10:37.004Z","0.7.7":"2018-09-16T09:13:19.093Z","0.7.8":"2018-09-19T05:58:46.100Z","0.7.9":"2018-09-30T12:06:45.534Z","0.7.11":"2018-10-17T14:50:53.738Z","0.7.12":"2018-10-23T03:02:05.082Z","0.7.15":"2018-11-12T11:58:52.566Z","0.8.0-alpha.0":"2018-12-26T06:22:18.920Z","0.8.0-alpha.1":"2019-01-30T12:27:28.822Z","0.8.0-alpha.2":"2019-02-23T08:20:04.445Z","0.8.0-alpha.3":"2019-03-06T11:03:20.496Z","0.8.0-alpha.4":"2019-03-07T04:31:56.106Z","0.8.0-alpha.5":"2019-03-07T11:01:35.352Z","0.8.0-alpha.6":"2019-03-08T04:22:13.053Z","0.8.0-alpha.7":"2019-07-08T06:42:46.325Z","0.8.0":"2019-08-26T10:06:55.822Z","0.8.1":"2019-08-27T04:07:56.967Z","0.8.2":"2019-09-05T07:16:16.969Z","1.0.0-alpha.0":"2019-09-11T09:45:23.538Z","0.8.3":"2019-09-28T05:55:21.048Z","1.0.0-alpha.2":"2019-10-04T06:35:27.568Z","1.0.0-alpha.4":"2019-11-11T11:16:26.211Z","1.0.0-beta.0":"2019-11-14T07:19:20.958Z","1.0.0-beta.1":"2019-11-16T15:30:24.450Z","1.0.0-beta.2":"2019-11-19T05:54:56.623Z","1.0.0-beta.5":"2019-11-22T14:03:30.932Z","1.0.0-beta.6":"2019-12-03T05:38:58.558Z","1.0.0-beta.10":"2019-12-09T04:12:12.805Z","1.0.0-beta.11":"2020-03-04T16:22:35.888Z","1.0.0-beta.12":"2020-03-12T04:50:21.065Z","1.0.0-beta.13":"2020-03-26T13:13:46.350Z","1.0.0-beta.14":"2020-04-01T07:33:22.914Z","1.0.0-beta.15":"2020-04-06T07:13:52.886Z","1.0.0-beta.16":"2020-04-06T14:32:16.425Z","0.7.17":"2020-04-08T05:14:35.128Z","0.7.18":"2020-04-08T05:21:26.771Z","0.8.5":"2020-04-08T05:36:39.896Z","1.0.0-beta.17":"2020-04-10T07:14:24.535Z","1.0.0-beta.18":"2020-04-13T15:18:56.842Z","1.0.0-beta.19":"2020-04-14T17:47:41.900Z","1.0.0-beta.20":"2020-04-16T14:55:17.277Z","1.0.0-beta.21":"2020-04-28T06:26:17.902Z","1.0.0-beta.23":"2020-05-18T09:30:43.370Z","1.0.0-beta.24":"2020-06-11T06:37:03.088Z","1.0.0-beta.25":"2020-06-11T11:30:32.257Z","1.0.0-beta.26":"2020-06-16T08:05:04.941Z","1.0.0-beta.27":"2020-06-23T05:48:26.163Z","1.0.0-beta.29":"2020-06-29T04:34:10.941Z","1.0.0-beta.30":"2020-06-29T16:04:23.872Z","1.0.0-beta.33":"2020-07-22T06:42:05.912Z","1.0.0-beta.34":"2020-09-07T06:19:21.653Z","1.0.0":"2020-09-07T08:54:49.292Z","1.0.1":"2020-09-21T07:05:58.384Z","1.1.0-alpha.0":"2020-10-26T05:50:37.191Z","1.0.4":"2021-01-11T06:05:44.349Z","1.0.6":"2021-09-02T17:33:12.781Z","1.1.0":"2021-10-04T05:54:31.231Z"},"keywords":["bot","chatbot","line","messaging-apis"],"repository":{"type":"git","url":"git+https://github.com/Yoctol/messaging-apis.git"},"license":"MIT","readmeFilename":"README.md","homepage":"https://github.com/Yoctol/messaging-apis#readme","bugs":{"url":"https://github.com/Yoctol/messaging-apis/issues"}}