PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
1.1.37 1.1.36 1.1.35 1.1.34 1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / fluent-support / actions / reply_to_ticket_as_agent.php
suretriggers / src / Integrations / fluent-support / actions Last commit date
add-tag-to-ticket.php 11 months ago block-user.php 11 months ago create-or-obtain-customer.php 11 months ago create-ticket.php 11 months ago get-tickets.php 11 months ago reply_to_ticket_as_agent.php 11 months ago
reply_to_ticket_as_agent.php
145 lines
1 <?php
2 /**
3 * ReplyToTicketAsAgent.
4 * php version 5.6
5 *
6 * @category ReplyToTicketAsAgent
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\FluentSupport\Actions;
15
16 use Exception;
17 use SureTriggers\Integrations\AutomateAction;
18 use SureTriggers\Traits\SingletonLoader;
19 use FluentSupport\App\Models\Ticket;
20 use FluentSupport\App\Models\Conversation;
21 use FluentSupport\App\Models\Agent;
22
23 /**
24 * ReplyToTicketAsAgent
25 */
26 class ReplyToTicketAsAgent extends AutomateAction {
27
28 use SingletonLoader;
29
30 /**
31 * Integration type.
32 *
33 * @var string
34 */
35 public $integration = 'FluentSupport';
36
37 /**
38 * Action name.
39 *
40 * @var string
41 */
42 public $action = 'reply_to_ticket_as_agent_fluent_support';
43
44 /**
45 * Register the action.
46 *
47 * @param array $actions Existing actions.
48 * @return array
49 */
50 public function register( $actions ) {
51 $actions[ $this->integration ][ $this->action ] = [
52 'label' => __( 'Reply to Ticket as Agent', 'suretriggers' ),
53 'action' => $this->action,
54 'function' => [ $this, 'action_listener' ],
55 ];
56
57 return $actions;
58 }
59
60 /**
61 * Action listener.
62 *
63 * @param int $user_id User ID.
64 * @param int $automation_id Automation ID.
65 * @param array $fields Field values.
66 * @param array $selected_options Selected options.
67 *
68 * @return array
69 * @throws Exception Exception.
70 */
71 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
72 if ( ! class_exists( 'FluentSupport\App\Models\Ticket' ) || ! class_exists( 'FluentSupport\App\Models\Conversation' ) || ! class_exists( 'FluentSupport\App\Models\Agent' ) ) {
73 return [
74 'status' => 'error',
75 'message' => 'Error: FluentSupport plugin is not installed correctly. Required classes are missing.',
76 ];
77 }
78
79 $ticket_id = isset( $selected_options['ticket_id'] ) ? (int) $selected_options['ticket_id'] : 0;
80 $reply_content = isset( $selected_options['reply_content'] ) ? wp_kses_post( $selected_options['reply_content'] ) : '';
81 $person_id = isset( $selected_options['person_id'] ) ? (int) $selected_options['person_id'] : 0;
82 $conversation_type = isset( $selected_options['conversation_type'] ) ? $selected_options['conversation_type'] : 'response';
83
84 if ( ! $person_id ) {
85 return [
86 'success' => false,
87 'message' => 'Agent (person_id) is required.',
88 ];
89 }
90
91 if ( ! $ticket_id || empty( $reply_content ) ) {
92 return [
93 'success' => false,
94 'message' => 'Ticket ID and reply content are required.',
95 ];
96 }
97
98 $ticket = Ticket::find( $ticket_id );
99
100 if ( ! $ticket ) {
101 return [
102 'success' => false,
103 'message' => 'Ticket not found.',
104 ];
105 }
106
107 $agent = Agent::where( 'id', $person_id )->first();
108 if ( ! $agent ) {
109 return [
110 'success' => false,
111 'message' => 'Agent not found or is not a valid FluentSupport agent.',
112 ];
113 }
114
115 try {
116 $conversation = Conversation::create(
117 [
118 'ticket_id' => $ticket_id,
119 'content' => $reply_content,
120 'person_id' => $person_id,
121 'person_type' => 'agent',
122 'conversation_type' => $conversation_type,
123 'source' => 'web',
124 'created_at' => current_time( 'mysql' ),
125 'updated_at' => current_time( 'mysql' ),
126 ]
127 );
128 } catch ( Exception $e ) {
129 return [
130 'success' => false,
131 'message' => 'Error while adding reply to ticket: ' . $e->getMessage(),
132 ];
133 }
134
135
136 return [
137 'success' => true,
138 'message' => 'Reply added to ticket successfully as agent.',
139 'data' => $conversation,
140 ];
141 }
142 }
143
144 ReplyToTicketAsAgent::get_instance();
145