1: <?php
2:
3: /**
4: * Copyright 2016 LINE Corporation
5: *
6: * LINE Corporation licenses this file to you under the Apache License,
7: * version 2.0 (the "License"); you may not use this file except in compliance
8: * with the License. You may obtain a copy of the License at:
9: *
10: * https://www.apache.org/licenses/LICENSE-2.0
11: *
12: * Unless required by applicable law or agreed to in writing, software
13: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15: * License for the specific language governing permissions and limitations
16: * under the License.
17: */
18:
19: namespace LINE\LINEBot\TemplateActionBuilder;
20:
21: use LINE\LINEBot\Constant\ActionType;
22: use LINE\LINEBot\TemplateActionBuilder;
23:
24: /**
25: * A builder class for postback action.
26: *
27: * @package LINE\LINEBot\TemplateActionBuilder
28: */
29: class PostbackTemplateActionBuilder implements TemplateActionBuilder
30: {
31: /** @var string */
32: private $label;
33: /** @var string */
34: private $data;
35: /** @var string|null */
36: private $text;
37:
38: /**
39: * PostbackAction constructor.
40: *
41: * @param string $label Label of action.
42: * @param string $data Data of postback.
43: * @param string|null $text The text which will be sent when action is executed (optional).
44: */
45: public function __construct($label, $data, $text = null)
46: {
47: $this->label = $label;
48: $this->data = $data;
49: $this->text = $text;
50: }
51:
52: /**
53: * Builds postback action structure.
54: *
55: * @return array Built postback action structure.
56: */
57: public function buildTemplateAction()
58: {
59: $action = [
60: 'type' => ActionType::POSTBACK,
61: 'label' => $this->label,
62: 'data' => $this->data,
63: ];
64:
65: if (isset($this->text)) {
66: // If text is set, append extend field.
67: $action['text'] = $this->text;
68: }
69:
70: return $action;
71: }
72: }
73: