_data,'view.'.$key)); case 'callback': return object_get($this->_data,'view.callback_id'); case 'callback_id': return $this->callback('id'); case 'callback_value': return $this->callback('value'); case 'meta': return object_get($this->_data,'view.private_metadata'); case 'state': return collect(object_get($this->_data,'view.'.$key.'.values')); case 'view_id': return object_get($this->_data,'view.id'); default: return parent::__get($key); } } /** * Separate out an callback command to the id that the command relates to * * @param string $key * @return string|null * @throws SlackException */ private function callback(string $key): ?string { $regex = '/^([a-z_]+)\|([0-9]+)$/'; $id = NULL; $value = NULL; if (preg_match($regex,$this->callback)) { $id = preg_replace($regex,'$1',$this->callback); $value = preg_replace($regex,'$2',$this->callback); } switch ($key) { case 'id': return $id ?: $this->callback; case 'value': return $value; default: throw new SlackException('Unknown key: '.$key); } } /** * This method should be overridden by a local implementation * * @return Modal * @throws \Exception */ public function respond(): Modal { // Do some magic with event data Log::info(sprintf('%s:View Submission for Callback [%s] User [%s] in [%s]',self::LOGKEY,$this->callback_id,$this->user_id,$this->team_id),['m'=>__METHOD__]); $action = NULL; $id = NULL; if (preg_match('/^(.*)\|([0-9]+)/',$this->callback_id)) { [$action,$cid] = explode('|',$this->callback_id,2); } elseif (preg_match('/^[a-z_]+$/',$this->callback_id)) { $action = $this->callback_id; } else { // If we get here, its an action that we dont know about. Log::notice(sprintf('%s:Unhandled CALLBACK [%s]',static::LOGKEY,$this->callback_id),['m'=>__METHOD__]); } switch ($action) { default: Log::notice(sprintf('%s:Unhandled ACTION [%s]',self::LOGKEY,$action),['m'=>__METHOD__]); } return new Modal; } public function value(string $block_id,string $action_id): ?string { return object_get($this->state->get($block_id),$action_id.'.value'); } }