首页 > 解决方案 > 捕获 Webhook 条目并放在新的 .csv 行上

问题描述

我正在尝试将 webhook 数据添加到创建的(如果不存在)存在的 .CSV 文件中,并将数据添加到同一 .CSV 文件中的新行(如果存在)。我遇到的问题是,当 webhook 第一次捕获数据时,我可以创建新文件 .CSV 并添加数据。如果 webhook 捕获到一组不同的数据,则不会创建包含该信息的新行,甚至不会将其添加到 .CSV 文件中。我究竟做错了什么?

这是一个有效载荷示例:

    Array
(
    [lead_id] => lead_id1
    [form_id] => form_id1
    [user_column_data] => Array
        (
            [0] => Array
                (
                    [column_name] => Full Name
                    [string_value] => John Doe
                )

            [1] => Array
                (
                    [column_name] => User Phone
                    [string_value] => 12345678
                )

            [2] => Array
                (
                    [column_name] => User Email
                    [string_value] => abc@123.com
                )

        )

    [api_version] => 1.0
    [google_key] => secret
)

这是我的代码:

<?php
$data = file_get_contents("php://input");
$events = json_decode($data, true);

$users  = $events['user_column_data'];

 $columns = false;

 $filename = "user_responses.csv";

 if( ! file_exists( $filename ) ){
     $columns = array( 
         "User Name", 
         "User Phone", 
         "User Email Address"
     );
 }

foreach ($users as $key => $value) {
    if( $columns ){
        $columns[] = strip_tags( $value['column_name'] ) . " ({$value['string_value']})";
    }

}     

$fp = fopen( $filename, "a+" );
if( $columns ){
    fputcsv( $fp, $columns );
}
fclose( $fp );

http_response_code(200);

?>

最重要的是,我什至无法将数据归入我创建的标题之下。

标签: php

解决方案


$columns如果文件不存在,您只会初始化数组。如果文件存在,则您$columns的未定义,并且foreach ($users...循环不会在此处添加任何条目。你应该摆脱if ($columns)支票。

此外,您的foreach ($users...循环遍历整行,而不是字段。循环中的每个$value都是一行,一个列数组。


推荐阅读