@igorneth, if you close and open the agent it should download the updated list of examples.
Thank you very much for the instructions!
The instructions for conducting the search and the operation worked perfectly!
Thank you so much again, Russ!
@igorneth, if you close and open the agent it should download the updated list of examples.
Thank you very much for the instructions!
The instructions for conducting the search and the operation worked perfectly!
Thank you so much again, Russ!
@igorneth, I added it. Let me know if you want me to make any changes.
Wow! It's perfect, my friend!
Thank you so much for everything! 
However, I still haven't been able to find it in the search.

@igorneth nice job!
Thank you very much, my friend Russ!
I’m really glad you liked it! Truly!
I'm currently trying, working and adapting on a translation into American English, so that the community can understand and enjoy the project and any future versions.
It would be really cool and interesting to make this example available within the software's GUI, with a link to the documentation post! What do you think of that idea? 
Thank you so much again! 
INTRODUÇÃO
Este tutorial demonstra como utilizar o TRIGGERcmd para executar um script PowerShell capaz de consultar o endereço IP Público de um Provedor de Internet - ISP, através de um computador e retornar o resultado para o TRIGGERcmd.
A solução utiliza duas APIs:
O resultado final será enviado ao TRIGGERcmd no seguinte formato:
$RESULTADO_MEUIP - $ORGANIZAÇÃO
Por exemplo:
123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
O resultado poderá então ser utilizado pelo recurso Voice/MCP Reply, permitindo que o Alexa fale a informação ao usuário.
O funcionamento da solução é dividido em etapas:
ALEXA
↓
TRIGGERcmd
↓
POWERSHELL
↓
MEU IP API
↓
ENDEREÇO IP PÚBLICO
↓
IPINFO.IO API
↓
ORGANIZAÇÃO / ISP
↓
POWERSHELL
↓
SendResult.bat
↓
TRIGGERcmd
↓
{{result}}
↓
ALEXA
O PowerShell é responsável pela lógica principal.
O SendResult.bat é responsável por enviar o resultado processado de volta para o TRIGGERcmd.
Antes de começar, você deverá possuir:
SendResult.bat disponível no diretório do TRIGGERcmd.O diretório utilizado pelo TRIGGERcmd neste projeto é:
%USERPROFILE%\.TRIGGERcmdData\
O SendResult.bat é responsável por enviar o resultado do comando para a API do TRIGGERcmd.
O arquivo deve estar localizado em:
%USERPROFILE%\.TRIGGERcmdData\SendResult.bat
Exemplo:
@echo off
if "%~1"=="" goto noparams
goto yesparams
:noparams
echo You need to specify the command result as a quoted sentence.
echo Example:
echo SendResult.bat "This is the result of my command."
goto end
:yesparams
set /p TCMD_TOKEN=<"%USERPROFILE%\.TRIGGERcmdData\token.tkn"
curl -X POST "https://www.triggercmd.com/api/command/result" ^
-H "Authorization: Bearer %TCMD_TOKEN%" ^
-H "content-type: multipart/form-data" ^
-F "computer_id=%TCMD_COMPUTER_ID%" ^
-F "command_id=%TCMD_COMMAND_ID%" ^
-F "result=%~1" ^
>>"%USERPROFILE%\.TRIGGERcmdData\results.log" 2>&1
:end

IMPORTANTE: não é necessário modificar esse arquivo para utilizar o script deste tutorial - Caso queira substituir o conteúdo, não há problema.
Crie um arquivo com a extensão:
.ps1
Por exemplo (C:\SCRIPTS\IP_PUBLICO.ps1):
IP_PUBLICO.ps1
Utilize o seguinte código:
# =====================================================================
# NOME DO PROJETO : CONSULTA DE IP PÚBLICO - TRIGGERcmd
# AUTOR : IGOR NETH DOS SANTOS
# ALMA MATER : UniCesumar - Superior de Tecnologia em Redes de Computadores (2015 - 2018)
# APOIO : EDSON ALEXANDRE DOMINGUES MORENO - Professor Moreno
# PAÍS : BRASIL
# VERSÃO : 1.1.0
# DATA : 03/09/2026 - 3 de Setembro de 2026
#
# DESCRIÇÃO:
# ESTE SCRIPT CONSULTA O ENDEREÇO IP PÚBLICO ATRAVÉS DA API DO SITE MEU IP
# E CONSULTA A ORGANIZAÇÃO RESPONSÁVEL PELO IP ATRAVÉS DA API IPINFO.IO.
#
# O RESULTADO FINAL É ENVIADO PARA O TRIGGERCMD ATRAVÉS DO SendResult.bat.
#
# SITE MEU IP: https://meuip.com | API MEU IP: https://meuip.com/api/meuip.php
#
# SITE IPINFO: https://ipinfo.io | API IPINFO: https://ipinfo.io
#
# FORMATO DO RESULTADO: IP - ORGANIZAÇÃO | EXEMPLO: 123.456.789.123 - NOME DO ASN
#
# OBSERVAÇÃO:
# A API IPINFO.IO RETORNA O PARÂMETRO "org" NO SEGUINTE FORMATO:
#
# AS123456 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
# O SCRIPT REMOVE AUTOMATICAMENTE O PREFIXO "AS" E OS NÚMEROS,
# MANTENDO SOMENTE O NOME DA ORGANIZAÇÃO:
#
# OBSERVAÇÃO:
# O SCRIPT ENVIA O RESULTADO PARA O TRIGGERCMD SEM A FRASE EM
# PORTUGUÊS QUE SERÁ FALADA PELA ALEXA.
#
# A FRASE QUE SERÁ FALADA PELA ALEXA É CONFIGURADA DIRETAMENTE
# NO CAMPO "VOICE/MCP REPLY" DO TRIGGERCMD, UTILIZANDO {{result}}.
#
# EXEMPLO DE VOICE/MCP REPLY: SEU IP PÚBLICO É: {{result}}
#
# RESULTADO ENVIADO PELO SCRIPT: 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
# HISTÓRICO DE VERSÕES:
# 1.0.0 - VERSÃO INICIAL FUNCIONAL.
# 1.1.0 - ADICIONADA CONSULTA À API IPINFO.IO PARA OBTER A ORGANIZAÇÃO.
# =====================================================================
# DEFINE O PROTOCOLO DE SEGURANÇA TLS 1.2 PARA AS CONEXÕES HTTPS.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# MONTA AUTOMATICAMENTE O CAMINHO COMPLETO DO ARQUIVO SENDRESULT.BAT.
# $ENV:USERPROFILE REPRESENTA A PASTA DO USUÁRIO ATUALMENTE CONECTADO AO WINDOWS.
$SENDRESULT = Join-Path $env:USERPROFILE ".TRIGGERcmdData\SendResult.bat"
# INICIA O BLOCO PRINCIPAL DE TRATAMENTO DE ERROS.
try {
# ================================================================
# CONSULTA A API DO MEU IP PARA OBTER O ENDEREÇO IP PÚBLICO.
# ================================================================
#
# -URI:
# DEFINE O ENDEREÇO DA API QUE SERÁ CONSULTADA.
#
# -TIMEOUTSEC 3:
# DEFINE UM LIMITE DE 3 SEGUNDOS PARA A RESPOSTA DA API.
#
# -ERRORACTION STOP:
# FAZ COM QUE UM ERRO NA CONSULTA SEJA TRATADO PELO CATCH.
$RESPOSTA_MEUIP = Invoke-RestMethod -Uri "https://meuip.com/api/meuip.php" -TimeoutSec 3 -ErrorAction Stop
# CONVERTE A RESPOSTA RECEBIDA DA API PARA TEXTO.
#
# OUT-STRING:
# CONVERTE O CONTEÚDO RETORNADO PARA UMA STRING.
#
# TRIM():
# REMOVE ESPAÇOS E QUEBRAS DE LINHA NO INÍCIO OU NO FINAL.
$IP_PUBLICO = ($RESPOSTA_MEUIP | Out-String).Trim()
# ================================================================
# VERIFICA SE A RESPOSTA POSSUI O FORMATO DE UM ENDEREÇO IPV4.
# ================================================================
#
# A EXPRESSÃO REGULAR VERIFICA SE EXISTEM QUATRO GRUPOS NUMÉRICOS
# SEPARADOS POR PONTOS.
#
# EXEMPLO DE FORMATO ESPERADO: 123.456.789.123
if ($IP_PUBLICO -match '^\d{1,3}(\.\d{1,3}){3}$') {
# ============================================================
# CONSULTA A API DO IPINFO.IO.
# ============================================================
#
# O IP OBTIDO ATRAVÉS DO MEU IP É INFORMADO DIRETAMENTE NA URL.
#
# EXEMPLO:
# https://ipinfo.io/123.456.789.123
#
# O OBJETIVO É OBTER AS INFORMAÇÕES REFERENTES EXATAMENTE AO
# ENDEREÇO IP QUE FOI RETORNADO PELA API DO MEU IP.
try {
$RESPOSTA_IPINFO = Invoke-RestMethod -Uri "https://ipinfo.io/$IP_PUBLICO" -TimeoutSec 3 -ErrorAction Stop
# O PARÂMETRO "org" DA API IPINFO RETORNA, POR EXEMPLO:
#
# AS123456 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
# REMOVE:
# AS123456
#
# E MANTÉM:
# XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
$ORGANIZACAO = $RESPOSTA_IPINFO.org -replace '^AS\d+\s+', ''
# MONTA O RESULTADO FINAL QUE SERÁ ENVIADO AO TRIGGERCMD.
#
# EXEMPLO:
# 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
$RESULTADO_MEUIP = "$IP_PUBLICO - $ORGANIZACAO"
}
# CASO A API IPINFO.IO NÃO RESPONDA OU OCORRA ALGUM ERRO,
# O SCRIPT MANTÉM O IP OBTIDO ATRAVÉS DA API DO MEU IP.
catch {
# ENVIA SOMENTE O ENDEREÇO IP COMO RESULTADO.
$RESULTADO_MEUIP = "$IP_PUBLICO"
}
}
# ================================================================
# CASO A RESPOSTA DA API DO MEU IP NÃO TENHA FORMATO DE IPV4.
# ================================================================
else {
# DEFINE UMA MENSAGEM INFORMANDO QUE A RESPOSTA DA API
# NÃO CORRESPONDEU AO FORMATO ESPERADO.
$RESULTADO_MEUIP = "A API retornou uma resposta invalida."
}
}
# ================================================================
# CAPTURA ERROS OCORRIDOS DURANTE A CONSULTA DO MEU IP.
# ================================================================
catch {
# DEFINE UMA MENSAGEM INFORMANDO QUE NÃO FOI POSSÍVEL
# CONSULTAR O ENDEREÇO IP PÚBLICO.
$RESULTADO_MEUIP = "Nao foi possivel consultar o seu IP Publico."
}
# ================================================================
# ENVIA O RESULTADO PARA O TRIGGERCMD.
# ================================================================
#
# $SENDRESULT:
# CONTÉM O CAMINHO COMPLETO PARA O ARQUIVO SENDRESULT.BAT.
#
# "$RESULTADO_MEUIP":
# PASSA O RESULTADO COMO ARGUMENTO PARA O ARQUIVO BAT.
#
# EXEMPLO DO VALOR ENVIADO:
#
# 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
#
# IMPORTANTE:
# O SCRIPT NÃO ENVIA A FRASE "SEU IP PÚBLICO É".
# ESSA FRASE DEVE SER CONFIGURADA NO TRIGGERCMD EM VOICE/MCP REPLY".
& $SENDRESULT "$RESULTADO_MEUIP"
# ENCERRA O SCRIPT POWERSHELL INFORMANDO QUE A EXECUÇÃO FOI
# CONCLUÍDA NORMALMENTE.
#
# O CÓDIGO 0 INDICA EXECUÇÃO CONCLUÍDA COM SUCESSO.
exit 0
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Essa configuração força o uso do TLS 1.2 para as conexões HTTPS realizadas pelo PowerShell.
O script identifica automaticamente o arquivo SendResult.bat utilizando:
$SENDRESULT = Join-Path $env:USERPROFILE ".TRIGGERcmdData\SendResult.bat"
Isso evita colocar um caminho absoluto como:
C:\Users\NomeDoUsuario\...
Dessa forma, o script pode ser utilizado por diferentes usuários do Windows.
A primeira API utilizada é:
https://meuip.com/api/meuip.php
O PowerShell executa:
$RESPOSTA_MEUIP = Invoke-RestMethod -Uri "https://meuip.com/api/meuip.php" -TimeoutSec 3 -ErrorAction Stop
Depois, o resultado é armazenado em:
$IP_PUBLICO
O script verifica se a resposta possui o formato básico de um endereço IPv4:
if ($IP_PUBLICO -match '^\d{1,3}(\.\d{1,3}){3}$')
Se a resposta for considerada válida, o script continua para a consulta no IPinfo.io.
Depois de obter o endereço IP, o script consulta a segunda API:
https://ipinfo.io/$IP_PUBLICO
Por exemplo:
https://ipinfo.io/123.456.789.123
O resultado é armazenado em:
$RESPOSTA_IPINFO
O campo utilizado pelo script é:
org
O IPinfo.io pode retornar algo semelhante a:
AS123456 XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
O script remove automaticamente o ASN:
$ORGANIZACAO = $RESPOSTA_IPINFO.org -replace '^AS\d+\s+', ''
O resultado passa a ser:
O NOME DO SEU ASN OU PROVEDOR DE INTERNET
O script combina o endereço IP e a organização:
$RESULTADO_MEUIP = "$IP_PUBLICO - $ORGANIZACAO"
Resultado:
123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
Uma característica importante desta implementação é que o IPinfo.io possui seu próprio try/catch.
Isso significa que, se o IPinfo.io estiver indisponível, o script ainda poderá retornar o IP público obtido pelo MEU IP.
Nesse caso:
123.456.789.123
será enviado ao TRIGGERcmd.
Assim, uma falha secundária não impede completamente a execução do comando.
Depois de processar as informações, o script executa:
& $SENDRESULT "$RESULTADO_MEUIP"
Isso chama o:
SendResult.bat
e envia o conteúdo de $RESULTADO_MEUIP para o TRIGGERcmd.
No TRIGGERcmd, crie ou edite um comando para executar o PowerShell.
O comando deverá executar o arquivo .ps1.
Por exemplo:
powershell.exe -ExecutionPolicy Bypass -File "C:\SCRIPTS\IP_PUBLICO.ps1"
Substitua o caminho pelo local onde você salvou o script.
Para utilizar o resultado com Alexa, configure o campo:
Voice/MCP Reply
Utilize:
Seu IP Público é: {{result}}
O {{result}} será substituído automaticamente pelo resultado enviado pelo script.
Por exemplo, se o PowerShell enviar:
123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
a resposta poderá ser:
Seu IP Público é: 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
Nesta implementação, o PowerShell envia somente os dados:
IP - ORGANIZAÇÃO
A frase em português é configurada diretamente no TRIGGERcmd.
Isso possui uma vantagem importante: evita problemas de codificação de caracteres entre PowerShell, Windows, SendResult.bat e a API.
Por exemplo, caracteres como:
A: á, à, â, ã, Á, À, Â, Ã
E: é, ê, É, Ê
I: í, Í
O: ó, ô, õ, Ó, Ô, Õ
U: ú, Ú
Cedilha: ç, Ç (usado com a letra c)
Trema: ¨
podem sofrer alterações dependendo da codificação utilizada durante o processamento.
Por isso, a solução separa:
DADOS:
123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
RESPOSTA DE VOZ:
Seu IP Público é: {{result}}
Antes de utilizar Alexa, recomenda-se testar o script diretamente no Windows.
Execute:
powershell.exe -ExecutionPolicy Bypass -File "C:\SCRIPTS\IP_PUBLICO.ps1"
Depois, verifique o resultado no TRIGGERcmd.
O resultado esperado será semelhante a:
123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
Depois que o comando estiver funcionando no TRIGGERcmd, execute o comando através da integração de voz configurada.
A Alexa deverá utilizar o conteúdo de:
{{result}}
para gerar a resposta.
Exemplo:
Seu IP Público é: 123.456.789.123 - XXXXXXXXXX XXXXXXXXXX XXXXXXXXXX
A solução completa fica organizada da seguinte maneira:
TRIGGERcmd
│
├── Trigger:
│ └── IP Público
│
├── Command:
│ └── powershell -ExecutionPolicy Bypass -File "C:\SCRIPTS\IP_PUBLICO.ps1"
│
├── Ground:
│ └── Foreground
│
├── Voice:
│ └── Rede
│
├── Voice/MCP Reply:
│ └── Seu IP Público é: {{result}}
│
├── MCP Tool Description:
│ └── Consulta o IP Público
│
├── Permitir Parâmetros:
│ └── False
│
└── Computador Windows
│
└── PowerShell
│
├── MEU IP API
│ └── IP Público
│
├── IPinfo.io API
│ └── Organização
│
└── SendResult.bat
└── TRIGGERcmd Result


A rotina completa fica organizada da seguinte maneira:
ROTINA
│
├── Nome:
│ └── Abrir Rede
│
├── Quando:
│ └── Voz
│ ├── Abrir Rede
│ └── Qual é minha Rede
│
└── Alexa Vai:
└── Personalizar
└── pergunte à Execute Comando para executar Rede


Para seu Dispositivo Alexa, pergunte à ela: "Alexa, abrir Rede"
A execução do comando de Voz e a execução da Trigger será mostrada em Ver Execuções.

Esta implementação foi desenvolvida com foco em simplicidade, reutilização e compatibilidade com o ambiente Windows + TRIGGERcmd.
O objetivo não é apenas consultar um endereço IP, mas demonstrar como um script PowerShell pode:
{{result}} em uma resposta de voz.A estrutura também permite que outras APIs sejam adicionadas futuramente, mantendo o mesmo conceito de integração.
Autor: Igor Neth dos Santos
Alma Mater: UniCesumar - Superior de Tecnologia em Redes de Computadores (2015 - 2018)
Apoio: Edson Alexandre Domingues Moreno - Professor Moreno
País: Brasil
Projeto: Consulta de IP Público - TRIGGERcmd
Versão: 1.1.0
LinkedIn:
https://www.linkedin.com/in/igorneth
https://www.linkedin.com/in/alexandre-moreno-a35b74100
Este projeto foi desenvolvido com o auxílio e orientação do meu Professor, Edson Alexandre Domingues Moreno - Professor Moreno, a quem agradeço pelo apoio técnico e pela contribuição durante o desenvolvimento e testes da solução.