首页 > 解决方案 > 不正确的 player_id 格式(不是有效的 UUID)

问题描述

我正在尝试添加一组 player_id 以发送以将通知推送到特定手机,但我不断收到错误消息“include_player_ids 中的 player_id 格式不正确(不是有效的 UUID)”

if ($cons) {
    $dado1 = array();
    $dado2 = array();
    while ($row = sqlsrv_fetch_array($cons, SQLSRV_FETCH_ASSOC)) {

        $dado1 = array(
            $row['funcionarioId']
        );
        array_push($dado2, $dado1);
    }
    //echo json_encode($dado2);
} else {
    $dado2 = array();
    array_push($dado2, $dado1);
    $retornoVazio = array("Retorno" => $dado2);
    EnviaEmailComErro($sql, sqlsrv_errors(), "Consulta_NFCe - ConsultaDados");
    array_push($dado2, array("Success" => "0", "Error" => "1"));
    echo json_encode($retornoVazio);
}

function sendMessage($produto, $mesa, $comanda, $garcom, $dado2)
{
    $content = array(
        "en" => " Garçom $garcom \n o pedido: $produto está pronto!\n mesa: $mesa \n comanda: $comanda",
    );

**That where it should add the IDS**

    $fields = array(
        'app_id' => "***",
        'include_player_ids' => array($dado2),
        'channel_for_external_user_ids' => 'push',
        'data' => array("foo" => "bar"),
        'contents' => $content
    );

    $fields = json_encode($fields);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8',
        'Authorization: Basic ***'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

    $response = curl_exec($ch);
    curl_close($ch);

    return $response;
}

$response = sendMessage($produto, $mesa, $comanda, $garcom, $dado2);
$return["allresponses"] = $response;
$return = json_encode($return);

可变$fields打印

{"app_id":"***",
"include_player_ids":[
                        [
                            ["2610ec53-"],
                            ["045eac07-"],
                            ["8fb19bd9-"]
                        ]
                    ]"

并且$response

{"errors":["Incorrect player_id format in include_player_ids (not a valid UUID): [[\"2610ec53-\"], [\"045eac07-\"], [\"8fb19bd9-\"]]"]}

“玩家ID在代码中是完整的,但我删除了它。”

标签: phponesignal

解决方案


if ($cons) { 您将各种东西推入数组中,将其简化为

if ($cons) {
    $dado2 = array();
    while ($row = sqlsrv_fetch_array($cons, SQLSRV_FETCH_ASSOC)) {
        $dado2[] = $row['funcionarioId'];
    }
} else {

并在函数中进行此更改

'include_player_ids' => $dado2,

推荐阅读